// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: behavior.proto

#include "behavior.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.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)
#include <google/protobuf/port_def.inc>
extern PROTOBUF_INTERNAL_EXPORT_behavior_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlGrantedResponse_behavior_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_behavior_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlLostResponse_behavior_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_behavior_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlRelease_behavior_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_behavior_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlRequest_behavior_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_messages_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_KeepAlivePing_messages_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_behavior_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ReservedControlLostResponse_behavior_2eproto;
namespace Anki {
namespace Vector {
namespace external_interface {
class ControlReleaseDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ControlRelease> _instance;
} _ControlRelease_default_instance_;
class ControlRequestDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ControlRequest> _instance;
} _ControlRequest_default_instance_;
class BehaviorControlRequestDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<BehaviorControlRequest> _instance;
  const ::Anki::Vector::external_interface::ControlRelease* control_release_;
  const ::Anki::Vector::external_interface::ControlRequest* control_request_;
} _BehaviorControlRequest_default_instance_;
class ControlGrantedResponseDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ControlGrantedResponse> _instance;
} _ControlGrantedResponse_default_instance_;
class ControlLostResponseDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ControlLostResponse> _instance;
} _ControlLostResponse_default_instance_;
class ReservedControlLostResponseDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ReservedControlLostResponse> _instance;
} _ReservedControlLostResponse_default_instance_;
class BehaviorControlResponseDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<BehaviorControlResponse> _instance;
  const ::Anki::Vector::external_interface::ControlGrantedResponse* control_granted_response_;
  const ::Anki::Vector::external_interface::ControlLostResponse* control_lost_event_;
  const ::Anki::Vector::external_interface::KeepAlivePing* keep_alive_;
  const ::Anki::Vector::external_interface::ReservedControlLostResponse* reserved_control_lost_event_;
} _BehaviorControlResponse_default_instance_;
}  // namespace external_interface
}  // namespace Vector
}  // namespace Anki
static void InitDefaultsscc_info_BehaviorControlRequest_behavior_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_BehaviorControlRequest_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::BehaviorControlRequest();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::BehaviorControlRequest::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_BehaviorControlRequest_behavior_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 2, 0, InitDefaultsscc_info_BehaviorControlRequest_behavior_2eproto}, {
      &scc_info_ControlRelease_behavior_2eproto.base,
      &scc_info_ControlRequest_behavior_2eproto.base,}};

static void InitDefaultsscc_info_BehaviorControlResponse_behavior_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_BehaviorControlResponse_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::BehaviorControlResponse();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::BehaviorControlResponse::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<4> scc_info_BehaviorControlResponse_behavior_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 4, 0, InitDefaultsscc_info_BehaviorControlResponse_behavior_2eproto}, {
      &scc_info_ControlGrantedResponse_behavior_2eproto.base,
      &scc_info_ControlLostResponse_behavior_2eproto.base,
      &scc_info_KeepAlivePing_messages_2eproto.base,
      &scc_info_ReservedControlLostResponse_behavior_2eproto.base,}};

static void InitDefaultsscc_info_ControlGrantedResponse_behavior_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_ControlGrantedResponse_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::ControlGrantedResponse();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::ControlGrantedResponse::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlGrantedResponse_behavior_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ControlGrantedResponse_behavior_2eproto}, {}};

static void InitDefaultsscc_info_ControlLostResponse_behavior_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_ControlLostResponse_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::ControlLostResponse();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::ControlLostResponse::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlLostResponse_behavior_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ControlLostResponse_behavior_2eproto}, {}};

static void InitDefaultsscc_info_ControlRelease_behavior_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_ControlRelease_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::ControlRelease();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::ControlRelease::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlRelease_behavior_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ControlRelease_behavior_2eproto}, {}};

static void InitDefaultsscc_info_ControlRequest_behavior_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_ControlRequest_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::ControlRequest();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::ControlRequest::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlRequest_behavior_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ControlRequest_behavior_2eproto}, {}};

static void InitDefaultsscc_info_ReservedControlLostResponse_behavior_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::Anki::Vector::external_interface::_ReservedControlLostResponse_default_instance_;
    new (ptr) ::Anki::Vector::external_interface::ReservedControlLostResponse();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Anki::Vector::external_interface::ReservedControlLostResponse::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ReservedControlLostResponse_behavior_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ReservedControlLostResponse_behavior_2eproto}, {}};

static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_behavior_2eproto[7];
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_behavior_2eproto[1];
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_behavior_2eproto = nullptr;

const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_behavior_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::ControlRelease, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::ControlRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::ControlRequest, priority_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::BehaviorControlRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::BehaviorControlRequest, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  offsetof(::Anki::Vector::external_interface::BehaviorControlRequestDefaultTypeInternal, control_release_),
  offsetof(::Anki::Vector::external_interface::BehaviorControlRequestDefaultTypeInternal, control_request_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::BehaviorControlRequest, request_type_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::ControlGrantedResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::ControlLostResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::ReservedControlLostResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::BehaviorControlResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::BehaviorControlResponse, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  offsetof(::Anki::Vector::external_interface::BehaviorControlResponseDefaultTypeInternal, control_granted_response_),
  offsetof(::Anki::Vector::external_interface::BehaviorControlResponseDefaultTypeInternal, control_lost_event_),
  offsetof(::Anki::Vector::external_interface::BehaviorControlResponseDefaultTypeInternal, keep_alive_),
  offsetof(::Anki::Vector::external_interface::BehaviorControlResponseDefaultTypeInternal, reserved_control_lost_event_),
  PROTOBUF_FIELD_OFFSET(::Anki::Vector::external_interface::BehaviorControlResponse, response_type_),
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, sizeof(::Anki::Vector::external_interface::ControlRelease)},
  { 5, -1, sizeof(::Anki::Vector::external_interface::ControlRequest)},
  { 11, -1, sizeof(::Anki::Vector::external_interface::BehaviorControlRequest)},
  { 19, -1, sizeof(::Anki::Vector::external_interface::ControlGrantedResponse)},
  { 24, -1, sizeof(::Anki::Vector::external_interface::ControlLostResponse)},
  { 29, -1, sizeof(::Anki::Vector::external_interface::ReservedControlLostResponse)},
  { 34, -1, sizeof(::Anki::Vector::external_interface::BehaviorControlResponse)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_ControlRelease_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_ControlRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_BehaviorControlRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_ControlGrantedResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_ControlLostResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_ReservedControlLostResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::Anki::Vector::external_interface::_BehaviorControlResponse_default_instance_),
};

const char descriptor_table_protodef_behavior_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\016behavior.proto\022\036Anki.Vector.external_i"
  "nterface\032\016messages.proto\"\020\n\016ControlRelea"
  "se\"\256\001\n\016ControlRequest\022I\n\010priority\030\001 \001(\0162"
  "7.Anki.Vector.external_interface.Control"
  "Request.Priority\"Q\n\010Priority\022\013\n\007UNKNOWN\020"
  "\000\022\026\n\022OVERRIDE_BEHAVIORS\020\n\022\013\n\007DEFAULT\020\024\022\023"
  "\n\017RESERVE_CONTROL\020\036\"\276\001\n\026BehaviorControlR"
  "equest\022I\n\017control_release\030\001 \001(\0132..Anki.V"
  "ector.external_interface.ControlReleaseH"
  "\000\022I\n\017control_request\030\002 \001(\0132..Anki.Vector"
  ".external_interface.ControlRequestH\000B\016\n\014"
  "request_type\"\030\n\026ControlGrantedResponse\"\025"
  "\n\023ControlLostResponse\"\035\n\033ReservedControl"
  "LostResponse\"\202\003\n\027BehaviorControlResponse"
  "\022Z\n\030control_granted_response\030\001 \001(\01326.Ank"
  "i.Vector.external_interface.ControlGrant"
  "edResponseH\000\022Q\n\022control_lost_event\030\002 \001(\013"
  "23.Anki.Vector.external_interface.Contro"
  "lLostResponseH\000\022C\n\nkeep_alive\030\003 \001(\0132-.An"
  "ki.Vector.external_interface.KeepAlivePi"
  "ngH\000\022b\n\033reserved_control_lost_event\030\004 \001("
  "\0132;.Anki.Vector.external_interface.Reser"
  "vedControlLostResponseH\000B\017\n\rresponse_typ"
  "eB Z\036Anki.Vector.external_interfaceb\006pro"
  "to3"
  ;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_behavior_2eproto_deps[1] = {
  &::descriptor_table_messages_2eproto,
};
static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_behavior_2eproto_sccs[7] = {
  &scc_info_BehaviorControlRequest_behavior_2eproto.base,
  &scc_info_BehaviorControlResponse_behavior_2eproto.base,
  &scc_info_ControlGrantedResponse_behavior_2eproto.base,
  &scc_info_ControlLostResponse_behavior_2eproto.base,
  &scc_info_ControlRelease_behavior_2eproto.base,
  &scc_info_ControlRequest_behavior_2eproto.base,
  &scc_info_ReservedControlLostResponse_behavior_2eproto.base,
};
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_behavior_2eproto_once;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_behavior_2eproto = {
  false, false, descriptor_table_protodef_behavior_2eproto, "behavior.proto", 963,
  &descriptor_table_behavior_2eproto_once, descriptor_table_behavior_2eproto_sccs, descriptor_table_behavior_2eproto_deps, 7, 1,
  schemas, file_default_instances, TableStruct_behavior_2eproto::offsets,
  file_level_metadata_behavior_2eproto, 7, file_level_enum_descriptors_behavior_2eproto, file_level_service_descriptors_behavior_2eproto,
};

// Force running AddDescriptors() at dynamic initialization time.
static bool dynamic_init_dummy_behavior_2eproto = (static_cast<void>(::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_behavior_2eproto)), true);
namespace Anki {
namespace Vector {
namespace external_interface {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ControlRequest_Priority_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_behavior_2eproto);
  return file_level_enum_descriptors_behavior_2eproto[0];
}
bool ControlRequest_Priority_IsValid(int value) {
  switch (value) {
    case 0:
    case 10:
    case 20:
    case 30:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr ControlRequest_Priority ControlRequest::UNKNOWN;
constexpr ControlRequest_Priority ControlRequest::OVERRIDE_BEHAVIORS;
constexpr ControlRequest_Priority ControlRequest::DEFAULT;
constexpr ControlRequest_Priority ControlRequest::RESERVE_CONTROL;
constexpr ControlRequest_Priority ControlRequest::Priority_MIN;
constexpr ControlRequest_Priority ControlRequest::Priority_MAX;
constexpr int ControlRequest::Priority_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)

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

void ControlRelease::InitAsDefaultInstance() {
}
class ControlRelease::_Internal {
 public:
};

ControlRelease::ControlRelease(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.ControlRelease)
}
ControlRelease::ControlRelease(const ControlRelease& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.ControlRelease)
}

void ControlRelease::SharedCtor() {
}

ControlRelease::~ControlRelease() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.ControlRelease)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ControlRelease::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

void ControlRelease::ArenaDtor(void* object) {
  ControlRelease* _this = reinterpret_cast< ControlRelease* >(object);
  (void)_this;
}
void ControlRelease::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ControlRelease::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ControlRelease& ControlRelease::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ControlRelease_behavior_2eproto.base);
  return *internal_default_instance();
}


void ControlRelease::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.ControlRelease)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ControlRelease::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ControlRelease::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.ControlRelease)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.ControlRelease)
  return target;
}

size_t ControlRelease::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.ControlRelease)
  size_t total_size = 0;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ControlRelease::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.ControlRelease)
  GOOGLE_DCHECK_NE(&from, this);
  const ControlRelease* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ControlRelease>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.ControlRelease)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.ControlRelease)
    MergeFrom(*source);
  }
}

void ControlRelease::MergeFrom(const ControlRelease& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.ControlRelease)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

}

void ControlRelease::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.ControlRelease)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ControlRelease::CopyFrom(const ControlRelease& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.ControlRelease)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ControlRelease::IsInitialized() const {
  return true;
}

void ControlRelease::InternalSwap(ControlRelease* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ControlRelease::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ControlRequest::InitAsDefaultInstance() {
}
class ControlRequest::_Internal {
 public:
};

ControlRequest::ControlRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.ControlRequest)
}
ControlRequest::ControlRequest(const ControlRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  priority_ = from.priority_;
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.ControlRequest)
}

void ControlRequest::SharedCtor() {
  priority_ = 0;
}

ControlRequest::~ControlRequest() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.ControlRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ControlRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

void ControlRequest::ArenaDtor(void* object) {
  ControlRequest* _this = reinterpret_cast< ControlRequest* >(object);
  (void)_this;
}
void ControlRequest::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ControlRequest::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ControlRequest& ControlRequest::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ControlRequest_behavior_2eproto.base);
  return *internal_default_instance();
}


void ControlRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.ControlRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  priority_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ControlRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // .Anki.Vector.external_interface.ControlRequest.Priority priority = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_priority(static_cast<::Anki::Vector::external_interface::ControlRequest_Priority>(val));
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ControlRequest::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.ControlRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .Anki.Vector.external_interface.ControlRequest.Priority priority = 1;
  if (this->priority() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      1, this->_internal_priority(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.ControlRequest)
  return target;
}

size_t ControlRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.ControlRequest)
  size_t total_size = 0;

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

  // .Anki.Vector.external_interface.ControlRequest.Priority priority = 1;
  if (this->priority() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_priority());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ControlRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.ControlRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const ControlRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ControlRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.ControlRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.ControlRequest)
    MergeFrom(*source);
  }
}

void ControlRequest::MergeFrom(const ControlRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.ControlRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.priority() != 0) {
    _internal_set_priority(from._internal_priority());
  }
}

void ControlRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.ControlRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ControlRequest::CopyFrom(const ControlRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.ControlRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ControlRequest::IsInitialized() const {
  return true;
}

void ControlRequest::InternalSwap(ControlRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(priority_, other->priority_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ControlRequest::GetMetadata() const {
  return GetMetadataStatic();
}


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

void BehaviorControlRequest::InitAsDefaultInstance() {
  ::Anki::Vector::external_interface::_BehaviorControlRequest_default_instance_.control_release_ = const_cast< ::Anki::Vector::external_interface::ControlRelease*>(
      ::Anki::Vector::external_interface::ControlRelease::internal_default_instance());
  ::Anki::Vector::external_interface::_BehaviorControlRequest_default_instance_.control_request_ = const_cast< ::Anki::Vector::external_interface::ControlRequest*>(
      ::Anki::Vector::external_interface::ControlRequest::internal_default_instance());
}
class BehaviorControlRequest::_Internal {
 public:
  static const ::Anki::Vector::external_interface::ControlRelease& control_release(const BehaviorControlRequest* msg);
  static const ::Anki::Vector::external_interface::ControlRequest& control_request(const BehaviorControlRequest* msg);
};

const ::Anki::Vector::external_interface::ControlRelease&
BehaviorControlRequest::_Internal::control_release(const BehaviorControlRequest* msg) {
  return *msg->request_type_.control_release_;
}
const ::Anki::Vector::external_interface::ControlRequest&
BehaviorControlRequest::_Internal::control_request(const BehaviorControlRequest* msg) {
  return *msg->request_type_.control_request_;
}
void BehaviorControlRequest::set_allocated_control_release(::Anki::Vector::external_interface::ControlRelease* control_release) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  clear_request_type();
  if (control_release) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(control_release);
    if (message_arena != submessage_arena) {
      control_release = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, control_release, submessage_arena);
    }
    set_has_control_release();
    request_type_.control_release_ = control_release;
  }
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.BehaviorControlRequest.control_release)
}
void BehaviorControlRequest::set_allocated_control_request(::Anki::Vector::external_interface::ControlRequest* control_request) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  clear_request_type();
  if (control_request) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(control_request);
    if (message_arena != submessage_arena) {
      control_request = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, control_request, submessage_arena);
    }
    set_has_control_request();
    request_type_.control_request_ = control_request;
  }
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.BehaviorControlRequest.control_request)
}
BehaviorControlRequest::BehaviorControlRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.BehaviorControlRequest)
}
BehaviorControlRequest::BehaviorControlRequest(const BehaviorControlRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  clear_has_request_type();
  switch (from.request_type_case()) {
    case kControlRelease: {
      _internal_mutable_control_release()->::Anki::Vector::external_interface::ControlRelease::MergeFrom(from._internal_control_release());
      break;
    }
    case kControlRequest: {
      _internal_mutable_control_request()->::Anki::Vector::external_interface::ControlRequest::MergeFrom(from._internal_control_request());
      break;
    }
    case REQUEST_TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.BehaviorControlRequest)
}

void BehaviorControlRequest::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_BehaviorControlRequest_behavior_2eproto.base);
  clear_has_request_type();
}

BehaviorControlRequest::~BehaviorControlRequest() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.BehaviorControlRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void BehaviorControlRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  if (has_request_type()) {
    clear_request_type();
  }
}

void BehaviorControlRequest::ArenaDtor(void* object) {
  BehaviorControlRequest* _this = reinterpret_cast< BehaviorControlRequest* >(object);
  (void)_this;
}
void BehaviorControlRequest::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void BehaviorControlRequest::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const BehaviorControlRequest& BehaviorControlRequest::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_BehaviorControlRequest_behavior_2eproto.base);
  return *internal_default_instance();
}


void BehaviorControlRequest::clear_request_type() {
// @@protoc_insertion_point(one_of_clear_start:Anki.Vector.external_interface.BehaviorControlRequest)
  switch (request_type_case()) {
    case kControlRelease: {
      if (GetArena() == nullptr) {
        delete request_type_.control_release_;
      }
      break;
    }
    case kControlRequest: {
      if (GetArena() == nullptr) {
        delete request_type_.control_request_;
      }
      break;
    }
    case REQUEST_TYPE_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = REQUEST_TYPE_NOT_SET;
}


void BehaviorControlRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.BehaviorControlRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_request_type();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* BehaviorControlRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // .Anki.Vector.external_interface.ControlRelease control_release = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_control_release(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // .Anki.Vector.external_interface.ControlRequest control_request = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_control_request(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* BehaviorControlRequest::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.BehaviorControlRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .Anki.Vector.external_interface.ControlRelease control_release = 1;
  if (_internal_has_control_release()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::control_release(this), target, stream);
  }

  // .Anki.Vector.external_interface.ControlRequest control_request = 2;
  if (_internal_has_control_request()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::control_request(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.BehaviorControlRequest)
  return target;
}

size_t BehaviorControlRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.BehaviorControlRequest)
  size_t total_size = 0;

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

  switch (request_type_case()) {
    // .Anki.Vector.external_interface.ControlRelease control_release = 1;
    case kControlRelease: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *request_type_.control_release_);
      break;
    }
    // .Anki.Vector.external_interface.ControlRequest control_request = 2;
    case kControlRequest: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *request_type_.control_request_);
      break;
    }
    case REQUEST_TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void BehaviorControlRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.BehaviorControlRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const BehaviorControlRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<BehaviorControlRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.BehaviorControlRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.BehaviorControlRequest)
    MergeFrom(*source);
  }
}

void BehaviorControlRequest::MergeFrom(const BehaviorControlRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.BehaviorControlRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.request_type_case()) {
    case kControlRelease: {
      _internal_mutable_control_release()->::Anki::Vector::external_interface::ControlRelease::MergeFrom(from._internal_control_release());
      break;
    }
    case kControlRequest: {
      _internal_mutable_control_request()->::Anki::Vector::external_interface::ControlRequest::MergeFrom(from._internal_control_request());
      break;
    }
    case REQUEST_TYPE_NOT_SET: {
      break;
    }
  }
}

void BehaviorControlRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.BehaviorControlRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void BehaviorControlRequest::CopyFrom(const BehaviorControlRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.BehaviorControlRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool BehaviorControlRequest::IsInitialized() const {
  return true;
}

void BehaviorControlRequest::InternalSwap(BehaviorControlRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(request_type_, other->request_type_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata BehaviorControlRequest::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ControlGrantedResponse::InitAsDefaultInstance() {
}
class ControlGrantedResponse::_Internal {
 public:
};

ControlGrantedResponse::ControlGrantedResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.ControlGrantedResponse)
}
ControlGrantedResponse::ControlGrantedResponse(const ControlGrantedResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.ControlGrantedResponse)
}

void ControlGrantedResponse::SharedCtor() {
}

ControlGrantedResponse::~ControlGrantedResponse() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.ControlGrantedResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ControlGrantedResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

void ControlGrantedResponse::ArenaDtor(void* object) {
  ControlGrantedResponse* _this = reinterpret_cast< ControlGrantedResponse* >(object);
  (void)_this;
}
void ControlGrantedResponse::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ControlGrantedResponse::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ControlGrantedResponse& ControlGrantedResponse::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ControlGrantedResponse_behavior_2eproto.base);
  return *internal_default_instance();
}


void ControlGrantedResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.ControlGrantedResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ControlGrantedResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ControlGrantedResponse::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.ControlGrantedResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.ControlGrantedResponse)
  return target;
}

size_t ControlGrantedResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.ControlGrantedResponse)
  size_t total_size = 0;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ControlGrantedResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.ControlGrantedResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const ControlGrantedResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ControlGrantedResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.ControlGrantedResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.ControlGrantedResponse)
    MergeFrom(*source);
  }
}

void ControlGrantedResponse::MergeFrom(const ControlGrantedResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.ControlGrantedResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

}

void ControlGrantedResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.ControlGrantedResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ControlGrantedResponse::CopyFrom(const ControlGrantedResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.ControlGrantedResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ControlGrantedResponse::IsInitialized() const {
  return true;
}

void ControlGrantedResponse::InternalSwap(ControlGrantedResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ControlGrantedResponse::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ControlLostResponse::InitAsDefaultInstance() {
}
class ControlLostResponse::_Internal {
 public:
};

ControlLostResponse::ControlLostResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.ControlLostResponse)
}
ControlLostResponse::ControlLostResponse(const ControlLostResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.ControlLostResponse)
}

void ControlLostResponse::SharedCtor() {
}

ControlLostResponse::~ControlLostResponse() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.ControlLostResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ControlLostResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

void ControlLostResponse::ArenaDtor(void* object) {
  ControlLostResponse* _this = reinterpret_cast< ControlLostResponse* >(object);
  (void)_this;
}
void ControlLostResponse::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ControlLostResponse::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ControlLostResponse& ControlLostResponse::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ControlLostResponse_behavior_2eproto.base);
  return *internal_default_instance();
}


void ControlLostResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.ControlLostResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ControlLostResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ControlLostResponse::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.ControlLostResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.ControlLostResponse)
  return target;
}

size_t ControlLostResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.ControlLostResponse)
  size_t total_size = 0;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ControlLostResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.ControlLostResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const ControlLostResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ControlLostResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.ControlLostResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.ControlLostResponse)
    MergeFrom(*source);
  }
}

void ControlLostResponse::MergeFrom(const ControlLostResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.ControlLostResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

}

void ControlLostResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.ControlLostResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ControlLostResponse::CopyFrom(const ControlLostResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.ControlLostResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ControlLostResponse::IsInitialized() const {
  return true;
}

void ControlLostResponse::InternalSwap(ControlLostResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ControlLostResponse::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ReservedControlLostResponse::InitAsDefaultInstance() {
}
class ReservedControlLostResponse::_Internal {
 public:
};

ReservedControlLostResponse::ReservedControlLostResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.ReservedControlLostResponse)
}
ReservedControlLostResponse::ReservedControlLostResponse(const ReservedControlLostResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.ReservedControlLostResponse)
}

void ReservedControlLostResponse::SharedCtor() {
}

ReservedControlLostResponse::~ReservedControlLostResponse() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.ReservedControlLostResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ReservedControlLostResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

void ReservedControlLostResponse::ArenaDtor(void* object) {
  ReservedControlLostResponse* _this = reinterpret_cast< ReservedControlLostResponse* >(object);
  (void)_this;
}
void ReservedControlLostResponse::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ReservedControlLostResponse::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ReservedControlLostResponse& ReservedControlLostResponse::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ReservedControlLostResponse_behavior_2eproto.base);
  return *internal_default_instance();
}


void ReservedControlLostResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.ReservedControlLostResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReservedControlLostResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ReservedControlLostResponse::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.ReservedControlLostResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.ReservedControlLostResponse)
  return target;
}

size_t ReservedControlLostResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.ReservedControlLostResponse)
  size_t total_size = 0;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ReservedControlLostResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.ReservedControlLostResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const ReservedControlLostResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ReservedControlLostResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.ReservedControlLostResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.ReservedControlLostResponse)
    MergeFrom(*source);
  }
}

void ReservedControlLostResponse::MergeFrom(const ReservedControlLostResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.ReservedControlLostResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

}

void ReservedControlLostResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.ReservedControlLostResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ReservedControlLostResponse::CopyFrom(const ReservedControlLostResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.ReservedControlLostResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ReservedControlLostResponse::IsInitialized() const {
  return true;
}

void ReservedControlLostResponse::InternalSwap(ReservedControlLostResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ReservedControlLostResponse::GetMetadata() const {
  return GetMetadataStatic();
}


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

void BehaviorControlResponse::InitAsDefaultInstance() {
  ::Anki::Vector::external_interface::_BehaviorControlResponse_default_instance_.control_granted_response_ = const_cast< ::Anki::Vector::external_interface::ControlGrantedResponse*>(
      ::Anki::Vector::external_interface::ControlGrantedResponse::internal_default_instance());
  ::Anki::Vector::external_interface::_BehaviorControlResponse_default_instance_.control_lost_event_ = const_cast< ::Anki::Vector::external_interface::ControlLostResponse*>(
      ::Anki::Vector::external_interface::ControlLostResponse::internal_default_instance());
  ::Anki::Vector::external_interface::_BehaviorControlResponse_default_instance_.keep_alive_ = const_cast< ::Anki::Vector::external_interface::KeepAlivePing*>(
      ::Anki::Vector::external_interface::KeepAlivePing::internal_default_instance());
  ::Anki::Vector::external_interface::_BehaviorControlResponse_default_instance_.reserved_control_lost_event_ = const_cast< ::Anki::Vector::external_interface::ReservedControlLostResponse*>(
      ::Anki::Vector::external_interface::ReservedControlLostResponse::internal_default_instance());
}
class BehaviorControlResponse::_Internal {
 public:
  static const ::Anki::Vector::external_interface::ControlGrantedResponse& control_granted_response(const BehaviorControlResponse* msg);
  static const ::Anki::Vector::external_interface::ControlLostResponse& control_lost_event(const BehaviorControlResponse* msg);
  static const ::Anki::Vector::external_interface::KeepAlivePing& keep_alive(const BehaviorControlResponse* msg);
  static const ::Anki::Vector::external_interface::ReservedControlLostResponse& reserved_control_lost_event(const BehaviorControlResponse* msg);
};

const ::Anki::Vector::external_interface::ControlGrantedResponse&
BehaviorControlResponse::_Internal::control_granted_response(const BehaviorControlResponse* msg) {
  return *msg->response_type_.control_granted_response_;
}
const ::Anki::Vector::external_interface::ControlLostResponse&
BehaviorControlResponse::_Internal::control_lost_event(const BehaviorControlResponse* msg) {
  return *msg->response_type_.control_lost_event_;
}
const ::Anki::Vector::external_interface::KeepAlivePing&
BehaviorControlResponse::_Internal::keep_alive(const BehaviorControlResponse* msg) {
  return *msg->response_type_.keep_alive_;
}
const ::Anki::Vector::external_interface::ReservedControlLostResponse&
BehaviorControlResponse::_Internal::reserved_control_lost_event(const BehaviorControlResponse* msg) {
  return *msg->response_type_.reserved_control_lost_event_;
}
void BehaviorControlResponse::set_allocated_control_granted_response(::Anki::Vector::external_interface::ControlGrantedResponse* control_granted_response) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  clear_response_type();
  if (control_granted_response) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(control_granted_response);
    if (message_arena != submessage_arena) {
      control_granted_response = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, control_granted_response, submessage_arena);
    }
    set_has_control_granted_response();
    response_type_.control_granted_response_ = control_granted_response;
  }
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.BehaviorControlResponse.control_granted_response)
}
void BehaviorControlResponse::set_allocated_control_lost_event(::Anki::Vector::external_interface::ControlLostResponse* control_lost_event) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  clear_response_type();
  if (control_lost_event) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(control_lost_event);
    if (message_arena != submessage_arena) {
      control_lost_event = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, control_lost_event, submessage_arena);
    }
    set_has_control_lost_event();
    response_type_.control_lost_event_ = control_lost_event;
  }
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.BehaviorControlResponse.control_lost_event)
}
void BehaviorControlResponse::set_allocated_keep_alive(::Anki::Vector::external_interface::KeepAlivePing* keep_alive) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  clear_response_type();
  if (keep_alive) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(keep_alive)->GetArena();
    if (message_arena != submessage_arena) {
      keep_alive = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, keep_alive, submessage_arena);
    }
    set_has_keep_alive();
    response_type_.keep_alive_ = keep_alive;
  }
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.BehaviorControlResponse.keep_alive)
}
void BehaviorControlResponse::clear_keep_alive() {
  if (_internal_has_keep_alive()) {
    if (GetArena() == nullptr) {
      delete response_type_.keep_alive_;
    }
    clear_has_response_type();
  }
}
void BehaviorControlResponse::set_allocated_reserved_control_lost_event(::Anki::Vector::external_interface::ReservedControlLostResponse* reserved_control_lost_event) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  clear_response_type();
  if (reserved_control_lost_event) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(reserved_control_lost_event);
    if (message_arena != submessage_arena) {
      reserved_control_lost_event = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, reserved_control_lost_event, submessage_arena);
    }
    set_has_reserved_control_lost_event();
    response_type_.reserved_control_lost_event_ = reserved_control_lost_event;
  }
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.BehaviorControlResponse.reserved_control_lost_event)
}
BehaviorControlResponse::BehaviorControlResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:Anki.Vector.external_interface.BehaviorControlResponse)
}
BehaviorControlResponse::BehaviorControlResponse(const BehaviorControlResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  clear_has_response_type();
  switch (from.response_type_case()) {
    case kControlGrantedResponse: {
      _internal_mutable_control_granted_response()->::Anki::Vector::external_interface::ControlGrantedResponse::MergeFrom(from._internal_control_granted_response());
      break;
    }
    case kControlLostEvent: {
      _internal_mutable_control_lost_event()->::Anki::Vector::external_interface::ControlLostResponse::MergeFrom(from._internal_control_lost_event());
      break;
    }
    case kKeepAlive: {
      _internal_mutable_keep_alive()->::Anki::Vector::external_interface::KeepAlivePing::MergeFrom(from._internal_keep_alive());
      break;
    }
    case kReservedControlLostEvent: {
      _internal_mutable_reserved_control_lost_event()->::Anki::Vector::external_interface::ReservedControlLostResponse::MergeFrom(from._internal_reserved_control_lost_event());
      break;
    }
    case RESPONSE_TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:Anki.Vector.external_interface.BehaviorControlResponse)
}

void BehaviorControlResponse::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_BehaviorControlResponse_behavior_2eproto.base);
  clear_has_response_type();
}

BehaviorControlResponse::~BehaviorControlResponse() {
  // @@protoc_insertion_point(destructor:Anki.Vector.external_interface.BehaviorControlResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void BehaviorControlResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  if (has_response_type()) {
    clear_response_type();
  }
}

void BehaviorControlResponse::ArenaDtor(void* object) {
  BehaviorControlResponse* _this = reinterpret_cast< BehaviorControlResponse* >(object);
  (void)_this;
}
void BehaviorControlResponse::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void BehaviorControlResponse::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const BehaviorControlResponse& BehaviorControlResponse::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_BehaviorControlResponse_behavior_2eproto.base);
  return *internal_default_instance();
}


void BehaviorControlResponse::clear_response_type() {
// @@protoc_insertion_point(one_of_clear_start:Anki.Vector.external_interface.BehaviorControlResponse)
  switch (response_type_case()) {
    case kControlGrantedResponse: {
      if (GetArena() == nullptr) {
        delete response_type_.control_granted_response_;
      }
      break;
    }
    case kControlLostEvent: {
      if (GetArena() == nullptr) {
        delete response_type_.control_lost_event_;
      }
      break;
    }
    case kKeepAlive: {
      if (GetArena() == nullptr) {
        delete response_type_.keep_alive_;
      }
      break;
    }
    case kReservedControlLostEvent: {
      if (GetArena() == nullptr) {
        delete response_type_.reserved_control_lost_event_;
      }
      break;
    }
    case RESPONSE_TYPE_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = RESPONSE_TYPE_NOT_SET;
}


void BehaviorControlResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:Anki.Vector.external_interface.BehaviorControlResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_response_type();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* BehaviorControlResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArena(); (void)arena;
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // .Anki.Vector.external_interface.ControlGrantedResponse control_granted_response = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_control_granted_response(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // .Anki.Vector.external_interface.ControlLostResponse control_lost_event = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_control_lost_event(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // .Anki.Vector.external_interface.KeepAlivePing keep_alive = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_keep_alive(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // .Anki.Vector.external_interface.ReservedControlLostResponse reserved_control_lost_event = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_reserved_control_lost_event(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* BehaviorControlResponse::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Anki.Vector.external_interface.BehaviorControlResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .Anki.Vector.external_interface.ControlGrantedResponse control_granted_response = 1;
  if (_internal_has_control_granted_response()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::control_granted_response(this), target, stream);
  }

  // .Anki.Vector.external_interface.ControlLostResponse control_lost_event = 2;
  if (_internal_has_control_lost_event()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::control_lost_event(this), target, stream);
  }

  // .Anki.Vector.external_interface.KeepAlivePing keep_alive = 3;
  if (_internal_has_keep_alive()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::keep_alive(this), target, stream);
  }

  // .Anki.Vector.external_interface.ReservedControlLostResponse reserved_control_lost_event = 4;
  if (_internal_has_reserved_control_lost_event()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        4, _Internal::reserved_control_lost_event(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Anki.Vector.external_interface.BehaviorControlResponse)
  return target;
}

size_t BehaviorControlResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Anki.Vector.external_interface.BehaviorControlResponse)
  size_t total_size = 0;

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

  switch (response_type_case()) {
    // .Anki.Vector.external_interface.ControlGrantedResponse control_granted_response = 1;
    case kControlGrantedResponse: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *response_type_.control_granted_response_);
      break;
    }
    // .Anki.Vector.external_interface.ControlLostResponse control_lost_event = 2;
    case kControlLostEvent: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *response_type_.control_lost_event_);
      break;
    }
    // .Anki.Vector.external_interface.KeepAlivePing keep_alive = 3;
    case kKeepAlive: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *response_type_.keep_alive_);
      break;
    }
    // .Anki.Vector.external_interface.ReservedControlLostResponse reserved_control_lost_event = 4;
    case kReservedControlLostEvent: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *response_type_.reserved_control_lost_event_);
      break;
    }
    case RESPONSE_TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void BehaviorControlResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Anki.Vector.external_interface.BehaviorControlResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const BehaviorControlResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<BehaviorControlResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Anki.Vector.external_interface.BehaviorControlResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Anki.Vector.external_interface.BehaviorControlResponse)
    MergeFrom(*source);
  }
}

void BehaviorControlResponse::MergeFrom(const BehaviorControlResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Anki.Vector.external_interface.BehaviorControlResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.response_type_case()) {
    case kControlGrantedResponse: {
      _internal_mutable_control_granted_response()->::Anki::Vector::external_interface::ControlGrantedResponse::MergeFrom(from._internal_control_granted_response());
      break;
    }
    case kControlLostEvent: {
      _internal_mutable_control_lost_event()->::Anki::Vector::external_interface::ControlLostResponse::MergeFrom(from._internal_control_lost_event());
      break;
    }
    case kKeepAlive: {
      _internal_mutable_keep_alive()->::Anki::Vector::external_interface::KeepAlivePing::MergeFrom(from._internal_keep_alive());
      break;
    }
    case kReservedControlLostEvent: {
      _internal_mutable_reserved_control_lost_event()->::Anki::Vector::external_interface::ReservedControlLostResponse::MergeFrom(from._internal_reserved_control_lost_event());
      break;
    }
    case RESPONSE_TYPE_NOT_SET: {
      break;
    }
  }
}

void BehaviorControlResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Anki.Vector.external_interface.BehaviorControlResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void BehaviorControlResponse::CopyFrom(const BehaviorControlResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Anki.Vector.external_interface.BehaviorControlResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool BehaviorControlResponse::IsInitialized() const {
  return true;
}

void BehaviorControlResponse::InternalSwap(BehaviorControlResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(response_type_, other->response_type_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata BehaviorControlResponse::GetMetadata() const {
  return GetMetadataStatic();
}



// Begin code inserted by Anki plugin.
ControlRequest::ControlRequest( ::Anki::Vector::external_interface::ControlRequest::Priority priority )
  : ControlRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_priority( priority );
}
// End code inserted by Anki plugin.


// Begin code inserted by Anki plugin.
BehaviorControlRequest::BehaviorControlRequest( ControlRelease* control_release )
  : BehaviorControlRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_allocated_control_release( control_release );
}
BehaviorControlRequest::BehaviorControlRequest( ControlRequest* control_request )
  : BehaviorControlRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_allocated_control_request( control_request );
}
// End code inserted by Anki plugin.


// Begin code inserted by Anki plugin.
BehaviorControlResponse::BehaviorControlResponse( ControlGrantedResponse* control_granted_response )
  : BehaviorControlResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_allocated_control_granted_response( control_granted_response );
}
BehaviorControlResponse::BehaviorControlResponse( ControlLostResponse* control_lost_event )
  : BehaviorControlResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_allocated_control_lost_event( control_lost_event );
}
BehaviorControlResponse::BehaviorControlResponse( KeepAlivePing* keep_alive )
  : BehaviorControlResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_allocated_keep_alive( keep_alive );
}
BehaviorControlResponse::BehaviorControlResponse( ReservedControlLostResponse* reserved_control_lost_event )
  : BehaviorControlResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {
  set_allocated_reserved_control_lost_event( reserved_control_lost_event );
}
// End code inserted by Anki plugin.

// @@protoc_insertion_point(namespace_scope)
}  // namespace external_interface
}  // namespace Vector
}  // namespace Anki
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::ControlRelease* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::ControlRelease >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::ControlRelease >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::ControlRequest* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::ControlRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::ControlRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::BehaviorControlRequest* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::BehaviorControlRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::BehaviorControlRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::ControlGrantedResponse* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::ControlGrantedResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::ControlGrantedResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::ControlLostResponse* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::ControlLostResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::ControlLostResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::ReservedControlLostResponse* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::ReservedControlLostResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::ReservedControlLostResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::Anki::Vector::external_interface::BehaviorControlResponse* Arena::CreateMaybeMessage< ::Anki::Vector::external_interface::BehaviorControlResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Anki::Vector::external_interface::BehaviorControlResponse >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
