text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: pb/clientmessage.proto
  
  #ifndef GOOGLE_PROTOBUF_INCLUDED_pb_2fclientmessage_2eproto
  #define GOOGLE_PROTOBUF_INCLUDED_pb_2fclientmessage_2eproto
  
  #include <limits>
  #include <string>
  
  #include <google/protobuf/port_def.inc>
  #if PROTOBUF_VERSION < 3017000
  #error This file was generated by a newer version of protoc which is
  #error incompatible with your Protocol Buffer headers. Please update
  #error your headers.
  #endif
  #if 3017003 < PROTOBUF_MIN_PROTOC_VERSION
  #error This file was generated by an older version of protoc which is
  #error incompatible with your Protocol Buffer headers. Please
  #error regenerate this file with a newer version of protoc.
  #endif
  
  #include <google/protobuf/port_undef.inc>
  #include <google/protobuf/io/coded_stream.h>
  #include <google/protobuf/arena.h>
  #include <google/protobuf/arenastring.h>
  #include <google/protobuf/generated_message_table_driven.h>
  #include <google/protobuf/generated_message_util.h>
  #include <google/protobuf/metadata_lite.h>
  #include <google/protobuf/generated_message_reflection.h>
  #include <google/protobuf/message.h>
  #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
  #include <google/protobuf/extension_set.h>  // IWYU pragma: export
  #include <google/protobuf/generated_enum_reflection.h>
  #include <google/protobuf/unknown_field_set.h>
  // @@protoc_insertion_point(includes)
  #include <google/protobuf/port_def.inc>
  #define PROTOBUF_INTERNAL_EXPORT_pb_2fclientmessage_2eproto
  PROTOBUF_NAMESPACE_OPEN
  namespace internal {
  class AnyMetadata;
  }  // namespace internal
  PROTOBUF_NAMESPACE_CLOSE
  
  // Internal implementation detail -- do not use these members.
  struct TableStruct_pb_2fclientmessage_2eproto {
    static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[4]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
    static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
    static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
  };
  extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_pb_2fclientmessage_2eproto;
  namespace pb {
  class ClientMessage;
  struct ClientMessageDefaultTypeInternal;
  extern ClientMessageDefaultTypeInternal _ClientMessage_default_instance_;
  class InboundMessage;
  struct InboundMessageDefaultTypeInternal;
  extern InboundMessageDefaultTypeInternal _InboundMessage_default_instance_;
  class OutboundMessage;
  struct OutboundMessageDefaultTypeInternal;
  extern OutboundMessageDefaultTypeInternal _OutboundMessage_default_instance_;
  class Receipt;
  struct ReceiptDefaultTypeInternal;
  extern ReceiptDefaultTypeInternal _Receipt_default_instance_;
  }  // namespace pb
  PROTOBUF_NAMESPACE_OPEN
  template<> ::pb::ClientMessage* Arena::CreateMaybeMessage<::pb::ClientMessage>(Arena*);
  template<> ::pb::InboundMessage* Arena::CreateMaybeMessage<::pb::InboundMessage>(Arena*);
  template<> ::pb::OutboundMessage* Arena::CreateMaybeMessage<::pb::OutboundMessage>(Arena*);
  template<> ::pb::Receipt* Arena::CreateMaybeMessage<::pb::Receipt>(Arena*);
  PROTOBUF_NAMESPACE_CLOSE
  namespace pb {
  
  enum ClientMessageType : int {
    OUTBOUND_MESSAGE = 0,
    INBOUND_MESSAGE = 1,
    RECEIPT = 2,
    ClientMessageType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
    ClientMessageType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
  };
  bool ClientMessageType_IsValid(int value);
  constexpr ClientMessageType ClientMessageType_MIN = OUTBOUND_MESSAGE;
  constexpr ClientMessageType ClientMessageType_MAX = RECEIPT;
  constexpr int ClientMessageType_ARRAYSIZE = ClientMessageType_MAX + 1;
  
  const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ClientMessageType_descriptor();
  template<typename T>
  inline const std::string& ClientMessageType_Name(T enum_t_value) {
    static_assert(::std::is_same<T, ClientMessageType>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function ClientMessageType_Name.");
    return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
      ClientMessageType_descriptor(), enum_t_value);
  }
  inline bool ClientMessageType_Parse(
      ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ClientMessageType* value) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<ClientMessageType>(
      ClientMessageType_descriptor(), name, value);
  }
  enum CompressionType : int {
    COMPRESSION_NONE = 0,
    COMPRESSION_ZLIB = 1,
    CompressionType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
    CompressionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
  };
  bool CompressionType_IsValid(int value);
  constexpr CompressionType CompressionType_MIN = COMPRESSION_NONE;
  constexpr CompressionType CompressionType_MAX = COMPRESSION_ZLIB;
  constexpr int CompressionType_ARRAYSIZE = CompressionType_MAX + 1;
  
  const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CompressionType_descriptor();
  template<typename T>
  inline const std::string& CompressionType_Name(T enum_t_value) {
    static_assert(::std::is_same<T, CompressionType>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function CompressionType_Name.");
    return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
      CompressionType_descriptor(), enum_t_value);
  }
  inline bool CompressionType_Parse(
      ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CompressionType* value) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<CompressionType>(
      CompressionType_descriptor(), name, value);
  }
  // ===================================================================
  
  class ClientMessage final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pb.ClientMessage) */ {
   public:
    inline ClientMessage() : ClientMessage(nullptr) {}
    ~ClientMessage() override;
    explicit constexpr ClientMessage(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    ClientMessage(const ClientMessage& from);
    ClientMessage(ClientMessage&& from) noexcept
      : ClientMessage() {
      *this = ::std::move(from);
    }
  
    inline ClientMessage& operator=(const ClientMessage& from) {
      CopyFrom(from);
      return *this;
    }
    inline ClientMessage& operator=(ClientMessage&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const ClientMessage& default_instance() {
      return *internal_default_instance();
    }
    static inline const ClientMessage* internal_default_instance() {
      return reinterpret_cast<const ClientMessage*>(
                 &_ClientMessage_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      0;
  
    friend void swap(ClientMessage& a, ClientMessage& b) {
      a.Swap(&b);
    }
    inline void Swap(ClientMessage* other) {
      if (other == this) return;
      if (GetOwningArena() == other->GetOwningArena()) {
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(ClientMessage* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline ClientMessage* New() const final {
      return new ClientMessage();
    }
  
    ClientMessage* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<ClientMessage>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const ClientMessage& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const ClientMessage& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message*to, const ::PROTOBUF_NAMESPACE_ID::Message&from);
    public:
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(ClientMessage* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "pb.ClientMessage";
    }
    protected:
    explicit ClientMessage(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kMessageFieldNumber = 2,
      kMessageTypeFieldNumber = 1,
      kCompressionTypeFieldNumber = 3,
    };
    // bytes message = 2;
    void clear_message();
    const std::string& message() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_message(ArgT0&& arg0, ArgT... args);
    std::string* mutable_message();
    PROTOBUF_MUST_USE_RESULT std::string* release_message();
    void set_allocated_message(std::string* message);
    private:
    const std::string& _internal_message() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_message(const std::string& value);
    std::string* _internal_mutable_message();
    public:
  
    // .pb.ClientMessageType message_type = 1;
    void clear_message_type();
    ::pb::ClientMessageType message_type() const;
    void set_message_type(::pb::ClientMessageType value);
    private:
    ::pb::ClientMessageType _internal_message_type() const;
    void _internal_set_message_type(::pb::ClientMessageType value);
    public:
  
    // .pb.CompressionType compression_type = 3;
    void clear_compression_type();
    ::pb::CompressionType compression_type() const;
    void set_compression_type(::pb::CompressionType value);
    private:
    ::pb::CompressionType _internal_compression_type() const;
    void _internal_set_compression_type(::pb::CompressionType value);
    public:
  
    // @@protoc_insertion_point(class_scope:pb.ClientMessage)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr message_;
    int message_type_;
    int compression_type_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_pb_2fclientmessage_2eproto;
  };
  // -------------------------------------------------------------------
  
  class OutboundMessage final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pb.OutboundMessage) */ {
   public:
    inline OutboundMessage() : OutboundMessage(nullptr) {}
    ~OutboundMessage() override;
    explicit constexpr OutboundMessage(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    OutboundMessage(const OutboundMessage& from);
    OutboundMessage(OutboundMessage&& from) noexcept
      : OutboundMessage() {
      *this = ::std::move(from);
    }
  
    inline OutboundMessage& operator=(const OutboundMessage& from) {
      CopyFrom(from);
      return *this;
    }
    inline OutboundMessage& operator=(OutboundMessage&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const OutboundMessage& default_instance() {
      return *internal_default_instance();
    }
    static inline const OutboundMessage* internal_default_instance() {
      return reinterpret_cast<const OutboundMessage*>(
                 &_OutboundMessage_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      1;
  
    friend void swap(OutboundMessage& a, OutboundMessage& b) {
      a.Swap(&b);
    }
    inline void Swap(OutboundMessage* other) {
      if (other == this) return;
      if (GetOwningArena() == other->GetOwningArena()) {
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(OutboundMessage* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline OutboundMessage* New() const final {
      return new OutboundMessage();
    }
  
    OutboundMessage* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<OutboundMessage>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const OutboundMessage& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const OutboundMessage& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message*to, const ::PROTOBUF_NAMESPACE_ID::Message&from);
    public:
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(OutboundMessage* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "pb.OutboundMessage";
    }
    protected:
    explicit OutboundMessage(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kDestsFieldNumber = 3,
      kSignaturesFieldNumber = 7,
      kPayloadsFieldNumber = 8,
      kDestFieldNumber = 1,
      kPayloadFieldNumber = 2,
      kBlockHashFieldNumber = 6,
      kMaxHoldingSecondsFieldNumber = 4,
      kNonceFieldNumber = 5,
    };
    // repeated string dests = 3;
    int dests_size() const;
    private:
    int _internal_dests_size() const;
    public:
    void clear_dests();
    const std::string& dests(int index) const;
    std::string* mutable_dests(int index);
    void set_dests(int index, const std::string& value);
    void set_dests(int index, std::string&& value);
    void set_dests(int index, const char* value);
    void set_dests(int index, const char* value, size_t size);
    std::string* add_dests();
    void add_dests(const std::string& value);
    void add_dests(std::string&& value);
    void add_dests(const char* value);
    void add_dests(const char* value, size_t size);
    const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& dests() const;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_dests();
    private:
    const std::string& _internal_dests(int index) const;
    std::string* _internal_add_dests();
    public:
  
    // repeated bytes signatures = 7;
    int signatures_size() const;
    private:
    int _internal_signatures_size() const;
    public:
    void clear_signatures();
    const std::string& signatures(int index) const;
    std::string* mutable_signatures(int index);
    void set_signatures(int index, const std::string& value);
    void set_signatures(int index, std::string&& value);
    void set_signatures(int index, const char* value);
    void set_signatures(int index, const void* value, size_t size);
    std::string* add_signatures();
    void add_signatures(const std::string& value);
    void add_signatures(std::string&& value);
    void add_signatures(const char* value);
    void add_signatures(const void* value, size_t size);
    const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& signatures() const;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_signatures();
    private:
    const std::string& _internal_signatures(int index) const;
    std::string* _internal_add_signatures();
    public:
  
    // repeated bytes payloads = 8;
    int payloads_size() const;
    private:
    int _internal_payloads_size() const;
    public:
    void clear_payloads();
    const std::string& payloads(int index) const;
    std::string* mutable_payloads(int index);
    void set_payloads(int index, const std::string& value);
    void set_payloads(int index, std::string&& value);
    void set_payloads(int index, const char* value);
    void set_payloads(int index, const void* value, size_t size);
    std::string* add_payloads();
    void add_payloads(const std::string& value);
    void add_payloads(std::string&& value);
    void add_payloads(const char* value);
    void add_payloads(const void* value, size_t size);
    const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& payloads() const;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_payloads();
    private:
    const std::string& _internal_payloads(int index) const;
    std::string* _internal_add_payloads();
    public:
  
    // string dest = 1;
    void clear_dest();
    const std::string& dest() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_dest(ArgT0&& arg0, ArgT... args);
    std::string* mutable_dest();
    PROTOBUF_MUST_USE_RESULT std::string* release_dest();
    void set_allocated_dest(std::string* dest);
    private:
    const std::string& _internal_dest() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_dest(const std::string& value);
    std::string* _internal_mutable_dest();
    public:
  
    // bytes payload = 2;
    void clear_payload();
    const std::string& payload() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_payload(ArgT0&& arg0, ArgT... args);
    std::string* mutable_payload();
    PROTOBUF_MUST_USE_RESULT std::string* release_payload();
    void set_allocated_payload(std::string* payload);
    private:
    const std::string& _internal_payload() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_payload(const std::string& value);
    std::string* _internal_mutable_payload();
    public:
  
    // bytes block_hash = 6;
    void clear_block_hash();
    const std::string& block_hash() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_block_hash(ArgT0&& arg0, ArgT... args);
    std::string* mutable_block_hash();
    PROTOBUF_MUST_USE_RESULT std::string* release_block_hash();
    void set_allocated_block_hash(std::string* block_hash);
    private:
    const std::string& _internal_block_hash() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_block_hash(const std::string& value);
    std::string* _internal_mutable_block_hash();
    public:
  
    // uint32 max_holding_seconds = 4;
    void clear_max_holding_seconds();
    ::PROTOBUF_NAMESPACE_ID::uint32 max_holding_seconds() const;
    void set_max_holding_seconds(::PROTOBUF_NAMESPACE_ID::uint32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint32 _internal_max_holding_seconds() const;
    void _internal_set_max_holding_seconds(::PROTOBUF_NAMESPACE_ID::uint32 value);
    public:
  
    // uint32 nonce = 5;
    void clear_nonce();
    ::PROTOBUF_NAMESPACE_ID::uint32 nonce() const;
    void set_nonce(::PROTOBUF_NAMESPACE_ID::uint32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint32 _internal_nonce() const;
    void _internal_set_nonce(::PROTOBUF_NAMESPACE_ID::uint32 value);
    public:
  
    // @@protoc_insertion_point(class_scope:pb.OutboundMessage)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> dests_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> signatures_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> payloads_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dest_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr payload_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr block_hash_;
    ::PROTOBUF_NAMESPACE_ID::uint32 max_holding_seconds_;
    ::PROTOBUF_NAMESPACE_ID::uint32 nonce_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_pb_2fclientmessage_2eproto;
  };
  // -------------------------------------------------------------------
  
  class InboundMessage final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pb.InboundMessage) */ {
   public:
    inline InboundMessage() : InboundMessage(nullptr) {}
    ~InboundMessage() override;
    explicit constexpr InboundMessage(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    InboundMessage(const InboundMessage& from);
    InboundMessage(InboundMessage&& from) noexcept
      : InboundMessage() {
      *this = ::std::move(from);
    }
  
    inline InboundMessage& operator=(const InboundMessage& from) {
      CopyFrom(from);
      return *this;
    }
    inline InboundMessage& operator=(InboundMessage&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const InboundMessage& default_instance() {
      return *internal_default_instance();
    }
    static inline const InboundMessage* internal_default_instance() {
      return reinterpret_cast<const InboundMessage*>(
                 &_InboundMessage_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      2;
  
    friend void swap(InboundMessage& a, InboundMessage& b) {
      a.Swap(&b);
    }
    inline void Swap(InboundMessage* other) {
      if (other == this) return;
      if (GetOwningArena() == other->GetOwningArena()) {
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(InboundMessage* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline InboundMessage* New() const final {
      return new InboundMessage();
    }
  
    InboundMessage* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<InboundMessage>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const InboundMessage& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const InboundMessage& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message*to, const ::PROTOBUF_NAMESPACE_ID::Message&from);
    public:
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(InboundMessage* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "pb.InboundMessage";
    }
    protected:
    explicit InboundMessage(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kSrcFieldNumber = 1,
      kPayloadFieldNumber = 2,
      kPrevHashFieldNumber = 3,
    };
    // string src = 1;
    void clear_src();
    const std::string& src() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_src(ArgT0&& arg0, ArgT... args);
    std::string* mutable_src();
    PROTOBUF_MUST_USE_RESULT std::string* release_src();
    void set_allocated_src(std::string* src);
    private:
    const std::string& _internal_src() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_src(const std::string& value);
    std::string* _internal_mutable_src();
    public:
  
    // bytes payload = 2;
    void clear_payload();
    const std::string& payload() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_payload(ArgT0&& arg0, ArgT... args);
    std::string* mutable_payload();
    PROTOBUF_MUST_USE_RESULT std::string* release_payload();
    void set_allocated_payload(std::string* payload);
    private:
    const std::string& _internal_payload() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_payload(const std::string& value);
    std::string* _internal_mutable_payload();
    public:
  
    // bytes prev_hash = 3;
    void clear_prev_hash();
    const std::string& prev_hash() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_prev_hash(ArgT0&& arg0, ArgT... args);
    std::string* mutable_prev_hash();
    PROTOBUF_MUST_USE_RESULT std::string* release_prev_hash();
    void set_allocated_prev_hash(std::string* prev_hash);
    private:
    const std::string& _internal_prev_hash() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_prev_hash(const std::string& value);
    std::string* _internal_mutable_prev_hash();
    public:
  
    // @@protoc_insertion_point(class_scope:pb.InboundMessage)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr src_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr payload_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr prev_hash_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_pb_2fclientmessage_2eproto;
  };
  // -------------------------------------------------------------------
  
  class Receipt final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pb.Receipt) */ {
   public:
    inline Receipt() : Receipt(nullptr) {}
    ~Receipt() override;
    explicit constexpr Receipt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    Receipt(const Receipt& from);
    Receipt(Receipt&& from) noexcept
      : Receipt() {
      *this = ::std::move(from);
    }
  
    inline Receipt& operator=(const Receipt& from) {
      CopyFrom(from);
      return *this;
    }
    inline Receipt& operator=(Receipt&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const Receipt& default_instance() {
      return *internal_default_instance();
    }
    static inline const Receipt* internal_default_instance() {
      return reinterpret_cast<const Receipt*>(
                 &_Receipt_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      3;
  
    friend void swap(Receipt& a, Receipt& b) {
      a.Swap(&b);
    }
    inline void Swap(Receipt* other) {
      if (other == this) return;
      if (GetOwningArena() == other->GetOwningArena()) {
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(Receipt* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline Receipt* New() const final {
      return new Receipt();
    }
  
    Receipt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<Receipt>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const Receipt& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const Receipt& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message*to, const ::PROTOBUF_NAMESPACE_ID::Message&from);
    public:
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(Receipt* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "pb.Receipt";
    }
    protected:
    explicit Receipt(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kPrevHashFieldNumber = 1,
      kSignatureFieldNumber = 2,
    };
    // bytes prev_hash = 1;
    void clear_prev_hash();
    const std::string& prev_hash() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_prev_hash(ArgT0&& arg0, ArgT... args);
    std::string* mutable_prev_hash();
    PROTOBUF_MUST_USE_RESULT std::string* release_prev_hash();
    void set_allocated_prev_hash(std::string* prev_hash);
    private:
    const std::string& _internal_prev_hash() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_prev_hash(const std::string& value);
    std::string* _internal_mutable_prev_hash();
    public:
  
    // bytes signature = 2;
    void clear_signature();
    const std::string& signature() const;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_signature(ArgT0&& arg0, ArgT... args);
    std::string* mutable_signature();
    PROTOBUF_MUST_USE_RESULT std::string* release_signature();
    void set_allocated_signature(std::string* signature);
    private:
    const std::string& _internal_signature() const;
    inline PROTOBUF_ALWAYS_INLINE void _internal_set_signature(const std::string& value);
    std::string* _internal_mutable_signature();
    public:
  
    // @@protoc_insertion_point(class_scope:pb.Receipt)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr prev_hash_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr signature_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_pb_2fclientmessage_2eproto;
  };
  // ===================================================================
  
  
  // ===================================================================
  
  #ifdef __GNUC__
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
  #endif  // __GNUC__
  // ClientMessage
  
  // .pb.ClientMessageType message_type = 1;
  inline void ClientMessage::clear_message_type() {
    message_type_ = 0;
  }
  inline ::pb::ClientMessageType ClientMessage::_internal_message_type() const {
    return static_cast< ::pb::ClientMessageType >(message_type_);
  }
  inline ::pb::ClientMessageType ClientMessage::message_type() const {
    // @@protoc_insertion_point(field_get:pb.ClientMessage.message_type)
    return _internal_message_type();
  }
  inline void ClientMessage::_internal_set_message_type(::pb::ClientMessageType value) {
    
    message_type_ = value;
  }
  inline void ClientMessage::set_message_type(::pb::ClientMessageType value) {
    _internal_set_message_type(value);
    // @@protoc_insertion_point(field_set:pb.ClientMessage.message_type)
  }
  
  // bytes message = 2;
  inline void ClientMessage::clear_message() {
    message_.ClearToEmpty();
  }
  inline const std::string& ClientMessage::message() const {
    // @@protoc_insertion_point(field_get:pb.ClientMessage.message)
    return _internal_message();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void ClientMessage::set_message(ArgT0&& arg0, ArgT... args) {
   
   message_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.ClientMessage.message)
  }
  inline std::string* ClientMessage::mutable_message() {
    std::string* _s = _internal_mutable_message();
    // @@protoc_insertion_point(field_mutable:pb.ClientMessage.message)
    return _s;
  }
  inline const std::string& ClientMessage::_internal_message() const {
    return message_.Get();
  }
  inline void ClientMessage::_internal_set_message(const std::string& value) {
    
    message_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* ClientMessage::_internal_mutable_message() {
    
    return message_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* ClientMessage::release_message() {
    // @@protoc_insertion_point(field_release:pb.ClientMessage.message)
    return message_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void ClientMessage::set_allocated_message(std::string* message) {
    if (message != nullptr) {
      
    } else {
      
    }
    message_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), message,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.ClientMessage.message)
  }
  
  // .pb.CompressionType compression_type = 3;
  inline void ClientMessage::clear_compression_type() {
    compression_type_ = 0;
  }
  inline ::pb::CompressionType ClientMessage::_internal_compression_type() const {
    return static_cast< ::pb::CompressionType >(compression_type_);
  }
  inline ::pb::CompressionType ClientMessage::compression_type() const {
    // @@protoc_insertion_point(field_get:pb.ClientMessage.compression_type)
    return _internal_compression_type();
  }
  inline void ClientMessage::_internal_set_compression_type(::pb::CompressionType value) {
    
    compression_type_ = value;
  }
  inline void ClientMessage::set_compression_type(::pb::CompressionType value) {
    _internal_set_compression_type(value);
    // @@protoc_insertion_point(field_set:pb.ClientMessage.compression_type)
  }
  
  // -------------------------------------------------------------------
  
  // OutboundMessage
  
  // string dest = 1;
  inline void OutboundMessage::clear_dest() {
    dest_.ClearToEmpty();
  }
  inline const std::string& OutboundMessage::dest() const {
    // @@protoc_insertion_point(field_get:pb.OutboundMessage.dest)
    return _internal_dest();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void OutboundMessage::set_dest(ArgT0&& arg0, ArgT... args) {
   
   dest_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.dest)
  }
  inline std::string* OutboundMessage::mutable_dest() {
    std::string* _s = _internal_mutable_dest();
    // @@protoc_insertion_point(field_mutable:pb.OutboundMessage.dest)
    return _s;
  }
  inline const std::string& OutboundMessage::_internal_dest() const {
    return dest_.Get();
  }
  inline void OutboundMessage::_internal_set_dest(const std::string& value) {
    
    dest_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* OutboundMessage::_internal_mutable_dest() {
    
    return dest_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* OutboundMessage::release_dest() {
    // @@protoc_insertion_point(field_release:pb.OutboundMessage.dest)
    return dest_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void OutboundMessage::set_allocated_dest(std::string* dest) {
    if (dest != nullptr) {
      
    } else {
      
    }
    dest_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dest,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.OutboundMessage.dest)
  }
  
  // bytes payload = 2;
  inline void OutboundMessage::clear_payload() {
    payload_.ClearToEmpty();
  }
  inline const std::string& OutboundMessage::payload() const {
    // @@protoc_insertion_point(field_get:pb.OutboundMessage.payload)
    return _internal_payload();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void OutboundMessage::set_payload(ArgT0&& arg0, ArgT... args) {
   
   payload_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.payload)
  }
  inline std::string* OutboundMessage::mutable_payload() {
    std::string* _s = _internal_mutable_payload();
    // @@protoc_insertion_point(field_mutable:pb.OutboundMessage.payload)
    return _s;
  }
  inline const std::string& OutboundMessage::_internal_payload() const {
    return payload_.Get();
  }
  inline void OutboundMessage::_internal_set_payload(const std::string& value) {
    
    payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* OutboundMessage::_internal_mutable_payload() {
    
    return payload_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* OutboundMessage::release_payload() {
    // @@protoc_insertion_point(field_release:pb.OutboundMessage.payload)
    return payload_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void OutboundMessage::set_allocated_payload(std::string* payload) {
    if (payload != nullptr) {
      
    } else {
      
    }
    payload_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), payload,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.OutboundMessage.payload)
  }
  
  // repeated string dests = 3;
  inline int OutboundMessage::_internal_dests_size() const {
    return dests_.size();
  }
  inline int OutboundMessage::dests_size() const {
    return _internal_dests_size();
  }
  inline void OutboundMessage::clear_dests() {
    dests_.Clear();
  }
  inline std::string* OutboundMessage::add_dests() {
    std::string* _s = _internal_add_dests();
    // @@protoc_insertion_point(field_add_mutable:pb.OutboundMessage.dests)
    return _s;
  }
  inline const std::string& OutboundMessage::_internal_dests(int index) const {
    return dests_.Get(index);
  }
  inline const std::string& OutboundMessage::dests(int index) const {
    // @@protoc_insertion_point(field_get:pb.OutboundMessage.dests)
    return _internal_dests(index);
  }
  inline std::string* OutboundMessage::mutable_dests(int index) {
    // @@protoc_insertion_point(field_mutable:pb.OutboundMessage.dests)
    return dests_.Mutable(index);
  }
  inline void OutboundMessage::set_dests(int index, const std::string& value) {
    dests_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.dests)
  }
  inline void OutboundMessage::set_dests(int index, std::string&& value) {
    dests_.Mutable(index)->assign(std::move(value));
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.dests)
  }
  inline void OutboundMessage::set_dests(int index, const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    dests_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set_char:pb.OutboundMessage.dests)
  }
  inline void OutboundMessage::set_dests(int index, const char* value, size_t size) {
    dests_.Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_set_pointer:pb.OutboundMessage.dests)
  }
  inline std::string* OutboundMessage::_internal_add_dests() {
    return dests_.Add();
  }
  inline void OutboundMessage::add_dests(const std::string& value) {
    dests_.Add()->assign(value);
    // @@protoc_insertion_point(field_add:pb.OutboundMessage.dests)
  }
  inline void OutboundMessage::add_dests(std::string&& value) {
    dests_.Add(std::move(value));
    // @@protoc_insertion_point(field_add:pb.OutboundMessage.dests)
  }
  inline void OutboundMessage::add_dests(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    dests_.Add()->assign(value);
    // @@protoc_insertion_point(field_add_char:pb.OutboundMessage.dests)
  }
  inline void OutboundMessage::add_dests(const char* value, size_t size) {
    dests_.Add()->assign(reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_add_pointer:pb.OutboundMessage.dests)
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
  OutboundMessage::dests() const {
    // @@protoc_insertion_point(field_list:pb.OutboundMessage.dests)
    return dests_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
  OutboundMessage::mutable_dests() {
    // @@protoc_insertion_point(field_mutable_list:pb.OutboundMessage.dests)
    return &dests_;
  }
  
  // uint32 max_holding_seconds = 4;
  inline void OutboundMessage::clear_max_holding_seconds() {
    max_holding_seconds_ = 0u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint32 OutboundMessage::_internal_max_holding_seconds() const {
    return max_holding_seconds_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint32 OutboundMessage::max_holding_seconds() const {
    // @@protoc_insertion_point(field_get:pb.OutboundMessage.max_holding_seconds)
    return _internal_max_holding_seconds();
  }
  inline void OutboundMessage::_internal_set_max_holding_seconds(::PROTOBUF_NAMESPACE_ID::uint32 value) {
    
    max_holding_seconds_ = value;
  }
  inline void OutboundMessage::set_max_holding_seconds(::PROTOBUF_NAMESPACE_ID::uint32 value) {
    _internal_set_max_holding_seconds(value);
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.max_holding_seconds)
  }
  
  // uint32 nonce = 5;
  inline void OutboundMessage::clear_nonce() {
    nonce_ = 0u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint32 OutboundMessage::_internal_nonce() const {
    return nonce_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint32 OutboundMessage::nonce() const {
    // @@protoc_insertion_point(field_get:pb.OutboundMessage.nonce)
    return _internal_nonce();
  }
  inline void OutboundMessage::_internal_set_nonce(::PROTOBUF_NAMESPACE_ID::uint32 value) {
    
    nonce_ = value;
  }
  inline void OutboundMessage::set_nonce(::PROTOBUF_NAMESPACE_ID::uint32 value) {
    _internal_set_nonce(value);
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.nonce)
  }
  
  // bytes block_hash = 6;
  inline void OutboundMessage::clear_block_hash() {
    block_hash_.ClearToEmpty();
  }
  inline const std::string& OutboundMessage::block_hash() const {
    // @@protoc_insertion_point(field_get:pb.OutboundMessage.block_hash)
    return _internal_block_hash();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void OutboundMessage::set_block_hash(ArgT0&& arg0, ArgT... args) {
   
   block_hash_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.block_hash)
  }
  inline std::string* OutboundMessage::mutable_block_hash() {
    std::string* _s = _internal_mutable_block_hash();
    // @@protoc_insertion_point(field_mutable:pb.OutboundMessage.block_hash)
    return _s;
  }
  inline const std::string& OutboundMessage::_internal_block_hash() const {
    return block_hash_.Get();
  }
  inline void OutboundMessage::_internal_set_block_hash(const std::string& value) {
    
    block_hash_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* OutboundMessage::_internal_mutable_block_hash() {
    
    return block_hash_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* OutboundMessage::release_block_hash() {
    // @@protoc_insertion_point(field_release:pb.OutboundMessage.block_hash)
    return block_hash_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void OutboundMessage::set_allocated_block_hash(std::string* block_hash) {
    if (block_hash != nullptr) {
      
    } else {
      
    }
    block_hash_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), block_hash,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.OutboundMessage.block_hash)
  }
  
  // repeated bytes signatures = 7;
  inline int OutboundMessage::_internal_signatures_size() const {
    return signatures_.size();
  }
  inline int OutboundMessage::signatures_size() const {
    return _internal_signatures_size();
  }
  inline void OutboundMessage::clear_signatures() {
    signatures_.Clear();
  }
  inline std::string* OutboundMessage::add_signatures() {
    std::string* _s = _internal_add_signatures();
    // @@protoc_insertion_point(field_add_mutable:pb.OutboundMessage.signatures)
    return _s;
  }
  inline const std::string& OutboundMessage::_internal_signatures(int index) const {
    return signatures_.Get(index);
  }
  inline const std::string& OutboundMessage::signatures(int index) const {
    // @@protoc_insertion_point(field_get:pb.OutboundMessage.signatures)
    return _internal_signatures(index);
  }
  inline std::string* OutboundMessage::mutable_signatures(int index) {
    // @@protoc_insertion_point(field_mutable:pb.OutboundMessage.signatures)
    return signatures_.Mutable(index);
  }
  inline void OutboundMessage::set_signatures(int index, const std::string& value) {
    signatures_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.signatures)
  }
  inline void OutboundMessage::set_signatures(int index, std::string&& value) {
    signatures_.Mutable(index)->assign(std::move(value));
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.signatures)
  }
  inline void OutboundMessage::set_signatures(int index, const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    signatures_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set_char:pb.OutboundMessage.signatures)
  }
  inline void OutboundMessage::set_signatures(int index, const void* value, size_t size) {
    signatures_.Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_set_pointer:pb.OutboundMessage.signatures)
  }
  inline std::string* OutboundMessage::_internal_add_signatures() {
    return signatures_.Add();
  }
  inline void OutboundMessage::add_signatures(const std::string& value) {
    signatures_.Add()->assign(value);
    // @@protoc_insertion_point(field_add:pb.OutboundMessage.signatures)
  }
  inline void OutboundMessage::add_signatures(std::string&& value) {
    signatures_.Add(std::move(value));
    // @@protoc_insertion_point(field_add:pb.OutboundMessage.signatures)
  }
  inline void OutboundMessage::add_signatures(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    signatures_.Add()->assign(value);
    // @@protoc_insertion_point(field_add_char:pb.OutboundMessage.signatures)
  }
  inline void OutboundMessage::add_signatures(const void* value, size_t size) {
    signatures_.Add()->assign(reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_add_pointer:pb.OutboundMessage.signatures)
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
  OutboundMessage::signatures() const {
    // @@protoc_insertion_point(field_list:pb.OutboundMessage.signatures)
    return signatures_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
  OutboundMessage::mutable_signatures() {
    // @@protoc_insertion_point(field_mutable_list:pb.OutboundMessage.signatures)
    return &signatures_;
  }
  
  // repeated bytes payloads = 8;
  inline int OutboundMessage::_internal_payloads_size() const {
    return payloads_.size();
  }
  inline int OutboundMessage::payloads_size() const {
    return _internal_payloads_size();
  }
  inline void OutboundMessage::clear_payloads() {
    payloads_.Clear();
  }
  inline std::string* OutboundMessage::add_payloads() {
    std::string* _s = _internal_add_payloads();
    // @@protoc_insertion_point(field_add_mutable:pb.OutboundMessage.payloads)
    return _s;
  }
  inline const std::string& OutboundMessage::_internal_payloads(int index) const {
    return payloads_.Get(index);
  }
  inline const std::string& OutboundMessage::payloads(int index) const {
    // @@protoc_insertion_point(field_get:pb.OutboundMessage.payloads)
    return _internal_payloads(index);
  }
  inline std::string* OutboundMessage::mutable_payloads(int index) {
    // @@protoc_insertion_point(field_mutable:pb.OutboundMessage.payloads)
    return payloads_.Mutable(index);
  }
  inline void OutboundMessage::set_payloads(int index, const std::string& value) {
    payloads_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.payloads)
  }
  inline void OutboundMessage::set_payloads(int index, std::string&& value) {
    payloads_.Mutable(index)->assign(std::move(value));
    // @@protoc_insertion_point(field_set:pb.OutboundMessage.payloads)
  }
  inline void OutboundMessage::set_payloads(int index, const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    payloads_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set_char:pb.OutboundMessage.payloads)
  }
  inline void OutboundMessage::set_payloads(int index, const void* value, size_t size) {
    payloads_.Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_set_pointer:pb.OutboundMessage.payloads)
  }
  inline std::string* OutboundMessage::_internal_add_payloads() {
    return payloads_.Add();
  }
  inline void OutboundMessage::add_payloads(const std::string& value) {
    payloads_.Add()->assign(value);
    // @@protoc_insertion_point(field_add:pb.OutboundMessage.payloads)
  }
  inline void OutboundMessage::add_payloads(std::string&& value) {
    payloads_.Add(std::move(value));
    // @@protoc_insertion_point(field_add:pb.OutboundMessage.payloads)
  }
  inline void OutboundMessage::add_payloads(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    payloads_.Add()->assign(value);
    // @@protoc_insertion_point(field_add_char:pb.OutboundMessage.payloads)
  }
  inline void OutboundMessage::add_payloads(const void* value, size_t size) {
    payloads_.Add()->assign(reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_add_pointer:pb.OutboundMessage.payloads)
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
  OutboundMessage::payloads() const {
    // @@protoc_insertion_point(field_list:pb.OutboundMessage.payloads)
    return payloads_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
  OutboundMessage::mutable_payloads() {
    // @@protoc_insertion_point(field_mutable_list:pb.OutboundMessage.payloads)
    return &payloads_;
  }
  
  // -------------------------------------------------------------------
  
  // InboundMessage
  
  // string src = 1;
  inline void InboundMessage::clear_src() {
    src_.ClearToEmpty();
  }
  inline const std::string& InboundMessage::src() const {
    // @@protoc_insertion_point(field_get:pb.InboundMessage.src)
    return _internal_src();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void InboundMessage::set_src(ArgT0&& arg0, ArgT... args) {
   
   src_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.InboundMessage.src)
  }
  inline std::string* InboundMessage::mutable_src() {
    std::string* _s = _internal_mutable_src();
    // @@protoc_insertion_point(field_mutable:pb.InboundMessage.src)
    return _s;
  }
  inline const std::string& InboundMessage::_internal_src() const {
    return src_.Get();
  }
  inline void InboundMessage::_internal_set_src(const std::string& value) {
    
    src_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* InboundMessage::_internal_mutable_src() {
    
    return src_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* InboundMessage::release_src() {
    // @@protoc_insertion_point(field_release:pb.InboundMessage.src)
    return src_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void InboundMessage::set_allocated_src(std::string* src) {
    if (src != nullptr) {
      
    } else {
      
    }
    src_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), src,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.InboundMessage.src)
  }
  
  // bytes payload = 2;
  inline void InboundMessage::clear_payload() {
    payload_.ClearToEmpty();
  }
  inline const std::string& InboundMessage::payload() const {
    // @@protoc_insertion_point(field_get:pb.InboundMessage.payload)
    return _internal_payload();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void InboundMessage::set_payload(ArgT0&& arg0, ArgT... args) {
   
   payload_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.InboundMessage.payload)
  }
  inline std::string* InboundMessage::mutable_payload() {
    std::string* _s = _internal_mutable_payload();
    // @@protoc_insertion_point(field_mutable:pb.InboundMessage.payload)
    return _s;
  }
  inline const std::string& InboundMessage::_internal_payload() const {
    return payload_.Get();
  }
  inline void InboundMessage::_internal_set_payload(const std::string& value) {
    
    payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* InboundMessage::_internal_mutable_payload() {
    
    return payload_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* InboundMessage::release_payload() {
    // @@protoc_insertion_point(field_release:pb.InboundMessage.payload)
    return payload_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void InboundMessage::set_allocated_payload(std::string* payload) {
    if (payload != nullptr) {
      
    } else {
      
    }
    payload_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), payload,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.InboundMessage.payload)
  }
  
  // bytes prev_hash = 3;
  inline void InboundMessage::clear_prev_hash() {
    prev_hash_.ClearToEmpty();
  }
  inline const std::string& InboundMessage::prev_hash() const {
    // @@protoc_insertion_point(field_get:pb.InboundMessage.prev_hash)
    return _internal_prev_hash();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void InboundMessage::set_prev_hash(ArgT0&& arg0, ArgT... args) {
   
   prev_hash_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.InboundMessage.prev_hash)
  }
  inline std::string* InboundMessage::mutable_prev_hash() {
    std::string* _s = _internal_mutable_prev_hash();
    // @@protoc_insertion_point(field_mutable:pb.InboundMessage.prev_hash)
    return _s;
  }
  inline const std::string& InboundMessage::_internal_prev_hash() const {
    return prev_hash_.Get();
  }
  inline void InboundMessage::_internal_set_prev_hash(const std::string& value) {
    
    prev_hash_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* InboundMessage::_internal_mutable_prev_hash() {
    
    return prev_hash_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* InboundMessage::release_prev_hash() {
    // @@protoc_insertion_point(field_release:pb.InboundMessage.prev_hash)
    return prev_hash_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void InboundMessage::set_allocated_prev_hash(std::string* prev_hash) {
    if (prev_hash != nullptr) {
      
    } else {
      
    }
    prev_hash_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), prev_hash,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.InboundMessage.prev_hash)
  }
  
  // -------------------------------------------------------------------
  
  // Receipt
  
  // bytes prev_hash = 1;
  inline void Receipt::clear_prev_hash() {
    prev_hash_.ClearToEmpty();
  }
  inline const std::string& Receipt::prev_hash() const {
    // @@protoc_insertion_point(field_get:pb.Receipt.prev_hash)
    return _internal_prev_hash();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void Receipt::set_prev_hash(ArgT0&& arg0, ArgT... args) {
   
   prev_hash_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.Receipt.prev_hash)
  }
  inline std::string* Receipt::mutable_prev_hash() {
    std::string* _s = _internal_mutable_prev_hash();
    // @@protoc_insertion_point(field_mutable:pb.Receipt.prev_hash)
    return _s;
  }
  inline const std::string& Receipt::_internal_prev_hash() const {
    return prev_hash_.Get();
  }
  inline void Receipt::_internal_set_prev_hash(const std::string& value) {
    
    prev_hash_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* Receipt::_internal_mutable_prev_hash() {
    
    return prev_hash_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* Receipt::release_prev_hash() {
    // @@protoc_insertion_point(field_release:pb.Receipt.prev_hash)
    return prev_hash_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void Receipt::set_allocated_prev_hash(std::string* prev_hash) {
    if (prev_hash != nullptr) {
      
    } else {
      
    }
    prev_hash_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), prev_hash,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.Receipt.prev_hash)
  }
  
  // bytes signature = 2;
  inline void Receipt::clear_signature() {
    signature_.ClearToEmpty();
  }
  inline const std::string& Receipt::signature() const {
    // @@protoc_insertion_point(field_get:pb.Receipt.signature)
    return _internal_signature();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void Receipt::set_signature(ArgT0&& arg0, ArgT... args) {
   
   signature_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:pb.Receipt.signature)
  }
  inline std::string* Receipt::mutable_signature() {
    std::string* _s = _internal_mutable_signature();
    // @@protoc_insertion_point(field_mutable:pb.Receipt.signature)
    return _s;
  }
  inline const std::string& Receipt::_internal_signature() const {
    return signature_.Get();
  }
  inline void Receipt::_internal_set_signature(const std::string& value) {
    
    signature_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
  }
  inline std::string* Receipt::_internal_mutable_signature() {
    
    return signature_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
  }
  inline std::string* Receipt::release_signature() {
    // @@protoc_insertion_point(field_release:pb.Receipt.signature)
    return signature_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  }
  inline void Receipt::set_allocated_signature(std::string* signature) {
    if (signature != nullptr) {
      
    } else {
      
    }
    signature_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), signature,
        GetArenaForAllocation());
    // @@protoc_insertion_point(field_set_allocated:pb.Receipt.signature)
  }
  
  #ifdef __GNUC__
    #pragma GCC diagnostic pop
  #endif  // __GNUC__
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  
  // @@protoc_insertion_point(namespace_scope)
  
  }  // namespace pb
  
  PROTOBUF_NAMESPACE_OPEN
  
  template <> struct is_proto_enum< ::pb::ClientMessageType> : ::std::true_type {};
  template <>
  inline const EnumDescriptor* GetEnumDescriptor< ::pb::ClientMessageType>() {
    return ::pb::ClientMessageType_descriptor();
  }
  template <> struct is_proto_enum< ::pb::CompressionType> : ::std::true_type {};
  template <>
  inline const EnumDescriptor* GetEnumDescriptor< ::pb::CompressionType>() {
    return ::pb::CompressionType_descriptor();
  }
  
  PROTOBUF_NAMESPACE_CLOSE
  
  // @@protoc_insertion_point(global_scope)
  
  #include <google/protobuf/port_undef.inc>
  #endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_pb_2fclientmessage_2eproto
  