// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: bgs/low/pb/client/user_manager_service.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = Google.Protobuf;
using pbc = Google.Protobuf.Collections;
using pbr = Google.Protobuf.Reflection;
namespace Bgs.Protocol.UserManager.V1
{

    /// <summary>Holder for reflection information generated from bgs/low/pb/client/user_manager_service.proto</summary>
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public static partial class UserManagerServiceReflection {

    #region Descriptor
    /// <summary>File descriptor for bgs/low/pb/client/user_manager_service.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static UserManagerServiceReflection() {
      byte[] descriptorData = System.Convert.FromBase64String(
          string.Concat(
            "CixiZ3MvbG93L3BiL2NsaWVudC91c2VyX21hbmFnZXJfc2VydmljZS5wcm90",
            "bxIcYmdzLnByb3RvY29sLnVzZXJfbWFuYWdlci52MRoqYmdzL2xvdy9wYi9j",
            "bGllbnQvdXNlcl9tYW5hZ2VyX3R5cGVzLnByb3RvGiRiZ3MvbG93L3BiL2Ns",
            "aWVudC9lbnRpdHlfdHlwZXMucHJvdG8aImJncy9sb3cvcGIvY2xpZW50L3Jv",
            "bGVfdHlwZXMucHJvdG8aIWJncy9sb3cvcGIvY2xpZW50L3JwY190eXBlcy5w",
            "cm90byJPChBTdWJzY3JpYmVSZXF1ZXN0EigKCGFnZW50X2lkGAEgASgLMhYu",
            "YmdzLnByb3RvY29sLkVudGl0eUlkEhEKCW9iamVjdF9pZBgCIAEoBCK/AQoR",
            "U3Vic2NyaWJlUmVzcG9uc2USRAoPYmxvY2tlZF9wbGF5ZXJzGAEgAygLMisu",
            "YmdzLnByb3RvY29sLnVzZXJfbWFuYWdlci52MS5CbG9ja2VkUGxheWVyEkIK",
            "DnJlY2VudF9wbGF5ZXJzGAIgAygLMiouYmdzLnByb3RvY29sLnVzZXJfbWFu",
            "YWdlci52MS5SZWNlbnRQbGF5ZXISIAoEcm9sZRgDIAMoCzISLmJncy5wcm90",
            "b2NvbC5Sb2xlIlEKElVuc3Vic2NyaWJlUmVxdWVzdBIoCghhZ2VudF9pZBgB",
            "IAEoCzIWLmJncy5wcm90b2NvbC5FbnRpdHlJZBIRCglvYmplY3RfaWQYAiAB",
            "KAQikQEKF0FkZFJlY2VudFBsYXllcnNSZXF1ZXN0EjsKB3BsYXllcnMYASAD",
            "KAsyKi5iZ3MucHJvdG9jb2wudXNlcl9tYW5hZ2VyLnYxLlJlY2VudFBsYXll",
            "chIoCghhZ2VudF9pZBgCIAEoCzIWLmJncy5wcm90b2NvbC5FbnRpdHlJZBIP",
            "Cgdwcm9ncmFtGAMgASgNInYKGEFkZFJlY2VudFBsYXllcnNSZXNwb25zZRJB",
            "Cg1wbGF5ZXJzX2FkZGVkGAEgAygLMiouYmdzLnByb3RvY29sLnVzZXJfbWFu",
            "YWdlci52MS5SZWNlbnRQbGF5ZXISFwoPcGxheWVyc19yZW1vdmVkGAMgAygH",
            "IlYKGUNsZWFyUmVjZW50UGxheWVyc1JlcXVlc3QSKAoIYWdlbnRfaWQYASAB",
            "KAsyFi5iZ3MucHJvdG9jb2wuRW50aXR5SWQSDwoHcHJvZ3JhbRgCIAEoDSI1",
            "ChpDbGVhclJlY2VudFBsYXllcnNSZXNwb25zZRIXCg9wbGF5ZXJzX3JlbW92",
            "ZWQYASADKAcidwoSQmxvY2tQbGF5ZXJSZXF1ZXN0EigKCGFnZW50X2lkGAEg",
            "ASgLMhYuYmdzLnByb3RvY29sLkVudGl0eUlkEikKCXRhcmdldF9pZBgCIAEo",
            "CzIWLmJncy5wcm90b2NvbC5FbnRpdHlJZBIMCgRyb2xlGAMgASgNImsKFFVu",
            "YmxvY2tQbGF5ZXJSZXF1ZXN0EigKCGFnZW50X2lkGAEgASgLMhYuYmdzLnBy",
            "b3RvY29sLkVudGl0eUlkEikKCXRhcmdldF9pZBgCIAEoCzIWLmJncy5wcm90",
            "b2NvbC5FbnRpdHlJZCK6AQoeQmxvY2tlZFBsYXllckFkZGVkTm90aWZpY2F0",
            "aW9uEjsKBnBsYXllchgBIAEoCzIrLmJncy5wcm90b2NvbC51c2VyX21hbmFn",
            "ZXIudjEuQmxvY2tlZFBsYXllchIvCg9nYW1lX2FjY291bnRfaWQYAiABKAsy",
            "Fi5iZ3MucHJvdG9jb2wuRW50aXR5SWQSKgoKYWNjb3VudF9pZBgDIAEoCzIW",
            "LmJncy5wcm90b2NvbC5FbnRpdHlJZCK8AQogQmxvY2tlZFBsYXllclJlbW92",
            "ZWROb3RpZmljYXRpb24SOwoGcGxheWVyGAEgASgLMisuYmdzLnByb3RvY29s",
            "LnVzZXJfbWFuYWdlci52MS5CbG9ja2VkUGxheWVyEi8KD2dhbWVfYWNjb3Vu",
            "dF9pZBgCIAEoCzIWLmJncy5wcm90b2NvbC5FbnRpdHlJZBIqCgphY2NvdW50",
            "X2lkGAMgASgLMhYuYmdzLnByb3RvY29sLkVudGl0eUlkIlwKHlJlY2VudFBs",
            "YXllcnNBZGRlZE5vdGlmaWNhdGlvbhI6CgZwbGF5ZXIYASADKAsyKi5iZ3Mu",
            "cHJvdG9jb2wudXNlcl9tYW5hZ2VyLnYxLlJlY2VudFBsYXllciJeCiBSZWNl",
            "bnRQbGF5ZXJzUmVtb3ZlZE5vdGlmaWNhdGlvbhI6CgZwbGF5ZXIYASADKAsy",
            "Ki5iZ3MucHJvdG9jb2wudXNlcl9tYW5hZ2VyLnYxLlJlY2VudFBsYXllcjK5",
            "BgoSVXNlck1hbmFnZXJTZXJ2aWNlEmwKCVN1YnNjcmliZRIuLmJncy5wcm90",
            "b2NvbC51c2VyX21hbmFnZXIudjEuU3Vic2NyaWJlUmVxdWVzdBovLmJncy5w",
            "cm90b2NvbC51c2VyX21hbmFnZXIudjEuU3Vic2NyaWJlUmVzcG9uc2USgQEK",
            "EEFkZFJlY2VudFBsYXllcnMSNS5iZ3MucHJvdG9jb2wudXNlcl9tYW5hZ2Vy",
            "LnYxLkFkZFJlY2VudFBsYXllcnNSZXF1ZXN0GjYuYmdzLnByb3RvY29sLnVz",
            "ZXJfbWFuYWdlci52MS5BZGRSZWNlbnRQbGF5ZXJzUmVzcG9uc2UShwEKEkNs",
            "ZWFyUmVjZW50UGxheWVycxI3LmJncy5wcm90b2NvbC51c2VyX21hbmFnZXIu",
            "djEuQ2xlYXJSZWNlbnRQbGF5ZXJzUmVxdWVzdBo4LmJncy5wcm90b2NvbC51",
            "c2VyX21hbmFnZXIudjEuQ2xlYXJSZWNlbnRQbGF5ZXJzUmVzcG9uc2USVQoL",
            "QmxvY2tQbGF5ZXISMC5iZ3MucHJvdG9jb2wudXNlcl9tYW5hZ2VyLnYxLkJs",
            "b2NrUGxheWVyUmVxdWVzdBoULmJncy5wcm90b2NvbC5Ob0RhdGESWQoNVW5i",
            "bG9ja1BsYXllchIyLmJncy5wcm90b2NvbC51c2VyX21hbmFnZXIudjEuVW5i",
            "bG9ja1BsYXllclJlcXVlc3QaFC5iZ3MucHJvdG9jb2wuTm9EYXRhEl8KFUJs",
            "b2NrUGxheWVyRm9yU2Vzc2lvbhIwLmJncy5wcm90b2NvbC51c2VyX21hbmFn",
            "ZXIudjEuQmxvY2tQbGF5ZXJSZXF1ZXN0GhQuYmdzLnByb3RvY29sLk5vRGF0",
            "YRI9Cg1Mb2FkQmxvY2tMaXN0EhYuYmdzLnByb3RvY29sLkVudGl0eUlkGhQu",
            "YmdzLnByb3RvY29sLk5vRGF0YRJVCgtVbnN1YnNjcmliZRIwLmJncy5wcm90",
            "b2NvbC51c2VyX21hbmFnZXIudjEuVW5zdWJzY3JpYmVSZXF1ZXN0GhQuYmdz",
            "LnByb3RvY29sLk5vRGF0YTLhAwoTVXNlck1hbmFnZXJMaXN0ZW5lchJvChRP",
            "bkJsb2NrZWRQbGF5ZXJBZGRlZBI8LmJncy5wcm90b2NvbC51c2VyX21hbmFn",
            "ZXIudjEuQmxvY2tlZFBsYXllckFkZGVkTm90aWZpY2F0aW9uGhkuYmdzLnBy",
            "b3RvY29sLk5PX1JFU1BPTlNFEnMKFk9uQmxvY2tlZFBsYXllclJlbW92ZWQS",
            "Pi5iZ3MucHJvdG9jb2wudXNlcl9tYW5hZ2VyLnYxLkJsb2NrZWRQbGF5ZXJS",
            "ZW1vdmVkTm90aWZpY2F0aW9uGhkuYmdzLnByb3RvY29sLk5PX1JFU1BPTlNF",
            "Em8KFE9uUmVjZW50UGxheWVyc0FkZGVkEjwuYmdzLnByb3RvY29sLnVzZXJf",
            "bWFuYWdlci52MS5SZWNlbnRQbGF5ZXJzQWRkZWROb3RpZmljYXRpb24aGS5i",
            "Z3MucHJvdG9jb2wuTk9fUkVTUE9OU0UScwoWT25SZWNlbnRQbGF5ZXJzUmVt",
            "b3ZlZBI+LmJncy5wcm90b2NvbC51c2VyX21hbmFnZXIudjEuUmVjZW50UGxh",
            "eWVyc1JlbW92ZWROb3RpZmljYXRpb24aGS5iZ3MucHJvdG9jb2wuTk9fUkVT",
            "UE9OU0VCBUgCgAEAYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { Bgs.Protocol.UserManager.V1.UserManagerTypesReflection.Descriptor, Bgs.Protocol.EntityTypesReflection.Descriptor, Bgs.Protocol.RoleTypesReflection.Descriptor, Bgs.Protocol.RpcTypesReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.SubscribeRequest), Bgs.Protocol.UserManager.V1.SubscribeRequest.Parser, new[]{ "AgentId", "ObjectId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.SubscribeResponse), Bgs.Protocol.UserManager.V1.SubscribeResponse.Parser, new[]{ "BlockedPlayers", "RecentPlayers", "Role" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.UnsubscribeRequest), Bgs.Protocol.UserManager.V1.UnsubscribeRequest.Parser, new[]{ "AgentId", "ObjectId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.AddRecentPlayersRequest), Bgs.Protocol.UserManager.V1.AddRecentPlayersRequest.Parser, new[]{ "Players", "AgentId", "Program" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.AddRecentPlayersResponse), Bgs.Protocol.UserManager.V1.AddRecentPlayersResponse.Parser, new[]{ "PlayersAdded", "PlayersRemoved" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.ClearRecentPlayersRequest), Bgs.Protocol.UserManager.V1.ClearRecentPlayersRequest.Parser, new[]{ "AgentId", "Program" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.ClearRecentPlayersResponse), Bgs.Protocol.UserManager.V1.ClearRecentPlayersResponse.Parser, new[]{ "PlayersRemoved" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.BlockPlayerRequest), Bgs.Protocol.UserManager.V1.BlockPlayerRequest.Parser, new[]{ "AgentId", "TargetId", "Role" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.UnblockPlayerRequest), Bgs.Protocol.UserManager.V1.UnblockPlayerRequest.Parser, new[]{ "AgentId", "TargetId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.BlockedPlayerAddedNotification), Bgs.Protocol.UserManager.V1.BlockedPlayerAddedNotification.Parser, new[]{ "Player", "GameAccountId", "AccountId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.BlockedPlayerRemovedNotification), Bgs.Protocol.UserManager.V1.BlockedPlayerRemovedNotification.Parser, new[]{ "Player", "GameAccountId", "AccountId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.RecentPlayersAddedNotification), Bgs.Protocol.UserManager.V1.RecentPlayersAddedNotification.Parser, new[]{ "Player" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.UserManager.V1.RecentPlayersRemovedNotification), Bgs.Protocol.UserManager.V1.RecentPlayersRemovedNotification.Parser, new[]{ "Player" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class SubscribeRequest : pb::IMessage<SubscribeRequest> {
    private static readonly pb::MessageParser<SubscribeRequest> _parser = new pb::MessageParser<SubscribeRequest>(() => new SubscribeRequest());
    public static pb::MessageParser<SubscribeRequest> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[0]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public SubscribeRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    public SubscribeRequest(SubscribeRequest other) : this() {
      AgentId = other.agentId_ != null ? other.AgentId.Clone() : null;
      objectId_ = other.objectId_;
    }

    public SubscribeRequest Clone() {
      return new SubscribeRequest(this);
    }

    /// <summary>Field number for the "agent_id" field.</summary>
    public const int AgentIdFieldNumber = 1;
    private Bgs.Protocol.EntityId agentId_;
    public Bgs.Protocol.EntityId AgentId {
      get { return agentId_; }
      set {
        agentId_ = value;
      }
    }

    /// <summary>Field number for the "object_id" field.</summary>
    public const int ObjectIdFieldNumber = 2;
    private ulong objectId_;
    public ulong ObjectId {
      get { return objectId_; }
      set {
        objectId_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as SubscribeRequest);
    }

    public bool Equals(SubscribeRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AgentId, other.AgentId)) return false;
      if (ObjectId != other.ObjectId) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (agentId_ != null) hash ^= AgentId.GetHashCode();
      if (ObjectId != 0UL) hash ^= ObjectId.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (agentId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AgentId);
      }
      if (ObjectId != 0UL) {
        output.WriteRawTag(16);
        output.WriteUInt64(ObjectId);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (agentId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AgentId);
      }
      if (ObjectId != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(ObjectId);
      }
      return size;
    }

    public void MergeFrom(SubscribeRequest other) {
      if (other == null) {
        return;
      }
      if (other.agentId_ != null) {
        if (agentId_ == null) {
          agentId_ = new Bgs.Protocol.EntityId();
        }
        AgentId.MergeFrom(other.AgentId);
      }
      if (other.ObjectId != 0UL) {
        ObjectId = other.ObjectId;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (agentId_ == null) {
              agentId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(agentId_);
            break;
          }
          case 16: {
            ObjectId = input.ReadUInt64();
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class SubscribeResponse : pb::IMessage<SubscribeResponse> {
    private static readonly pb::MessageParser<SubscribeResponse> _parser = new pb::MessageParser<SubscribeResponse>(() => new SubscribeResponse());
    public static pb::MessageParser<SubscribeResponse> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[1]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public SubscribeResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    public SubscribeResponse(SubscribeResponse other) : this() {
      blockedPlayers_ = other.blockedPlayers_.Clone();
      recentPlayers_ = other.recentPlayers_.Clone();
      role_ = other.role_.Clone();
    }

    public SubscribeResponse Clone() {
      return new SubscribeResponse(this);
    }

    /// <summary>Field number for the "blocked_players" field.</summary>
    public const int BlockedPlayersFieldNumber = 1;
    private static readonly pb::FieldCodec<Bgs.Protocol.UserManager.V1.BlockedPlayer> _repeated_blockedPlayers_codec
        = pb::FieldCodec.ForMessage(10, Bgs.Protocol.UserManager.V1.BlockedPlayer.Parser);
    private readonly pbc::RepeatedField<Bgs.Protocol.UserManager.V1.BlockedPlayer> blockedPlayers_ = new pbc::RepeatedField<Bgs.Protocol.UserManager.V1.BlockedPlayer>();
    public pbc::RepeatedField<Bgs.Protocol.UserManager.V1.BlockedPlayer> BlockedPlayers {
      get { return blockedPlayers_; }
    }

    /// <summary>Field number for the "recent_players" field.</summary>
    public const int RecentPlayersFieldNumber = 2;
    private static readonly pb::FieldCodec<Bgs.Protocol.UserManager.V1.RecentPlayer> _repeated_recentPlayers_codec
        = pb::FieldCodec.ForMessage(18, Bgs.Protocol.UserManager.V1.RecentPlayer.Parser);
    private readonly pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> recentPlayers_ = new pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer>();
    public pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> RecentPlayers {
      get { return recentPlayers_; }
    }

    /// <summary>Field number for the "role" field.</summary>
    public const int RoleFieldNumber = 3;
    private static readonly pb::FieldCodec<Bgs.Protocol.Role> _repeated_role_codec
        = pb::FieldCodec.ForMessage(26, Bgs.Protocol.Role.Parser);
    private readonly pbc::RepeatedField<Bgs.Protocol.Role> role_ = new pbc::RepeatedField<Bgs.Protocol.Role>();
    public pbc::RepeatedField<Bgs.Protocol.Role> Role {
      get { return role_; }
    }

    public override bool Equals(object other) {
      return Equals(other as SubscribeResponse);
    }

    public bool Equals(SubscribeResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!blockedPlayers_.Equals(other.blockedPlayers_)) return false;
      if(!recentPlayers_.Equals(other.recentPlayers_)) return false;
      if(!role_.Equals(other.role_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= blockedPlayers_.GetHashCode();
      hash ^= recentPlayers_.GetHashCode();
      hash ^= role_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      blockedPlayers_.WriteTo(output, _repeated_blockedPlayers_codec);
      recentPlayers_.WriteTo(output, _repeated_recentPlayers_codec);
      role_.WriteTo(output, _repeated_role_codec);
    }

    public int CalculateSize() {
      int size = 0;
      size += blockedPlayers_.CalculateSize(_repeated_blockedPlayers_codec);
      size += recentPlayers_.CalculateSize(_repeated_recentPlayers_codec);
      size += role_.CalculateSize(_repeated_role_codec);
      return size;
    }

    public void MergeFrom(SubscribeResponse other) {
      if (other == null) {
        return;
      }
      blockedPlayers_.Add(other.blockedPlayers_);
      recentPlayers_.Add(other.recentPlayers_);
      role_.Add(other.role_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            blockedPlayers_.AddEntriesFrom(input, _repeated_blockedPlayers_codec);
            break;
          }
          case 18: {
            recentPlayers_.AddEntriesFrom(input, _repeated_recentPlayers_codec);
            break;
          }
          case 26: {
            role_.AddEntriesFrom(input, _repeated_role_codec);
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class UnsubscribeRequest : pb::IMessage<UnsubscribeRequest> {
    private static readonly pb::MessageParser<UnsubscribeRequest> _parser = new pb::MessageParser<UnsubscribeRequest>(() => new UnsubscribeRequest());
    public static pb::MessageParser<UnsubscribeRequest> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[2]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public UnsubscribeRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    public UnsubscribeRequest(UnsubscribeRequest other) : this() {
      AgentId = other.agentId_ != null ? other.AgentId.Clone() : null;
      objectId_ = other.objectId_;
    }

    public UnsubscribeRequest Clone() {
      return new UnsubscribeRequest(this);
    }

    /// <summary>Field number for the "agent_id" field.</summary>
    public const int AgentIdFieldNumber = 1;
    private Bgs.Protocol.EntityId agentId_;
    public Bgs.Protocol.EntityId AgentId {
      get { return agentId_; }
      set {
        agentId_ = value;
      }
    }

    /// <summary>Field number for the "object_id" field.</summary>
    public const int ObjectIdFieldNumber = 2;
    private ulong objectId_;
    public ulong ObjectId {
      get { return objectId_; }
      set {
        objectId_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as UnsubscribeRequest);
    }

    public bool Equals(UnsubscribeRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AgentId, other.AgentId)) return false;
      if (ObjectId != other.ObjectId) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (agentId_ != null) hash ^= AgentId.GetHashCode();
      if (ObjectId != 0UL) hash ^= ObjectId.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (agentId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AgentId);
      }
      if (ObjectId != 0UL) {
        output.WriteRawTag(16);
        output.WriteUInt64(ObjectId);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (agentId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AgentId);
      }
      if (ObjectId != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(ObjectId);
      }
      return size;
    }

    public void MergeFrom(UnsubscribeRequest other) {
      if (other == null) {
        return;
      }
      if (other.agentId_ != null) {
        if (agentId_ == null) {
          agentId_ = new Bgs.Protocol.EntityId();
        }
        AgentId.MergeFrom(other.AgentId);
      }
      if (other.ObjectId != 0UL) {
        ObjectId = other.ObjectId;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (agentId_ == null) {
              agentId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(agentId_);
            break;
          }
          case 16: {
            ObjectId = input.ReadUInt64();
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class AddRecentPlayersRequest : pb::IMessage<AddRecentPlayersRequest> {
    private static readonly pb::MessageParser<AddRecentPlayersRequest> _parser = new pb::MessageParser<AddRecentPlayersRequest>(() => new AddRecentPlayersRequest());
    public static pb::MessageParser<AddRecentPlayersRequest> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[3]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public AddRecentPlayersRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    public AddRecentPlayersRequest(AddRecentPlayersRequest other) : this() {
      players_ = other.players_.Clone();
      AgentId = other.agentId_ != null ? other.AgentId.Clone() : null;
      program_ = other.program_;
    }

    public AddRecentPlayersRequest Clone() {
      return new AddRecentPlayersRequest(this);
    }

    /// <summary>Field number for the "players" field.</summary>
    public const int PlayersFieldNumber = 1;
    private static readonly pb::FieldCodec<Bgs.Protocol.UserManager.V1.RecentPlayer> _repeated_players_codec
        = pb::FieldCodec.ForMessage(10, Bgs.Protocol.UserManager.V1.RecentPlayer.Parser);
    private readonly pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> players_ = new pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer>();
    public pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> Players {
      get { return players_; }
    }

    /// <summary>Field number for the "agent_id" field.</summary>
    public const int AgentIdFieldNumber = 2;
    private Bgs.Protocol.EntityId agentId_;
    public Bgs.Protocol.EntityId AgentId {
      get { return agentId_; }
      set {
        agentId_ = value;
      }
    }

    /// <summary>Field number for the "program" field.</summary>
    public const int ProgramFieldNumber = 3;
    private uint program_;
    public uint Program {
      get { return program_; }
      set {
        program_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as AddRecentPlayersRequest);
    }

    public bool Equals(AddRecentPlayersRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!players_.Equals(other.players_)) return false;
      if (!object.Equals(AgentId, other.AgentId)) return false;
      if (Program != other.Program) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= players_.GetHashCode();
      if (agentId_ != null) hash ^= AgentId.GetHashCode();
      if (Program != 0) hash ^= Program.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      players_.WriteTo(output, _repeated_players_codec);
      if (agentId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AgentId);
      }
      if (Program != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(Program);
      }
    }

    public int CalculateSize() {
      int size = 0;
      size += players_.CalculateSize(_repeated_players_codec);
      if (agentId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AgentId);
      }
      if (Program != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Program);
      }
      return size;
    }

    public void MergeFrom(AddRecentPlayersRequest other) {
      if (other == null) {
        return;
      }
      players_.Add(other.players_);
      if (other.agentId_ != null) {
        if (agentId_ == null) {
          agentId_ = new Bgs.Protocol.EntityId();
        }
        AgentId.MergeFrom(other.AgentId);
      }
      if (other.Program != 0) {
        Program = other.Program;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            players_.AddEntriesFrom(input, _repeated_players_codec);
            break;
          }
          case 18: {
            if (agentId_ == null) {
              agentId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(agentId_);
            break;
          }
          case 24: {
            Program = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class AddRecentPlayersResponse : pb::IMessage<AddRecentPlayersResponse> {
    private static readonly pb::MessageParser<AddRecentPlayersResponse> _parser = new pb::MessageParser<AddRecentPlayersResponse>(() => new AddRecentPlayersResponse());
    public static pb::MessageParser<AddRecentPlayersResponse> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[4]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public AddRecentPlayersResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    public AddRecentPlayersResponse(AddRecentPlayersResponse other) : this() {
      playersAdded_ = other.playersAdded_.Clone();
      playersRemoved_ = other.playersRemoved_.Clone();
    }

    public AddRecentPlayersResponse Clone() {
      return new AddRecentPlayersResponse(this);
    }

    /// <summary>Field number for the "players_added" field.</summary>
    public const int PlayersAddedFieldNumber = 1;
    private static readonly pb::FieldCodec<Bgs.Protocol.UserManager.V1.RecentPlayer> _repeated_playersAdded_codec
        = pb::FieldCodec.ForMessage(10, Bgs.Protocol.UserManager.V1.RecentPlayer.Parser);
    private readonly pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> playersAdded_ = new pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer>();
    public pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> PlayersAdded {
      get { return playersAdded_; }
    }

    /// <summary>Field number for the "players_removed" field.</summary>
    public const int PlayersRemovedFieldNumber = 3;
    private static readonly pb::FieldCodec<uint> _repeated_playersRemoved_codec
        = pb::FieldCodec.ForFixed32(26);
    private readonly pbc::RepeatedField<uint> playersRemoved_ = new pbc::RepeatedField<uint>();
    public pbc::RepeatedField<uint> PlayersRemoved {
      get { return playersRemoved_; }
    }

    public override bool Equals(object other) {
      return Equals(other as AddRecentPlayersResponse);
    }

    public bool Equals(AddRecentPlayersResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!playersAdded_.Equals(other.playersAdded_)) return false;
      if(!playersRemoved_.Equals(other.playersRemoved_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= playersAdded_.GetHashCode();
      hash ^= playersRemoved_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      playersAdded_.WriteTo(output, _repeated_playersAdded_codec);
      playersRemoved_.WriteTo(output, _repeated_playersRemoved_codec);
    }

    public int CalculateSize() {
      int size = 0;
      size += playersAdded_.CalculateSize(_repeated_playersAdded_codec);
      size += playersRemoved_.CalculateSize(_repeated_playersRemoved_codec);
      return size;
    }

    public void MergeFrom(AddRecentPlayersResponse other) {
      if (other == null) {
        return;
      }
      playersAdded_.Add(other.playersAdded_);
      playersRemoved_.Add(other.playersRemoved_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            playersAdded_.AddEntriesFrom(input, _repeated_playersAdded_codec);
            break;
          }
          case 26:
          case 29: {
            playersRemoved_.AddEntriesFrom(input, _repeated_playersRemoved_codec);
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class ClearRecentPlayersRequest : pb::IMessage<ClearRecentPlayersRequest> {
    private static readonly pb::MessageParser<ClearRecentPlayersRequest> _parser = new pb::MessageParser<ClearRecentPlayersRequest>(() => new ClearRecentPlayersRequest());
    public static pb::MessageParser<ClearRecentPlayersRequest> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[5]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public ClearRecentPlayersRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    public ClearRecentPlayersRequest(ClearRecentPlayersRequest other) : this() {
      AgentId = other.agentId_ != null ? other.AgentId.Clone() : null;
      program_ = other.program_;
    }

    public ClearRecentPlayersRequest Clone() {
      return new ClearRecentPlayersRequest(this);
    }

    /// <summary>Field number for the "agent_id" field.</summary>
    public const int AgentIdFieldNumber = 1;
    private Bgs.Protocol.EntityId agentId_;
    public Bgs.Protocol.EntityId AgentId {
      get { return agentId_; }
      set {
        agentId_ = value;
      }
    }

    /// <summary>Field number for the "program" field.</summary>
    public const int ProgramFieldNumber = 2;
    private uint program_;
    public uint Program {
      get { return program_; }
      set {
        program_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as ClearRecentPlayersRequest);
    }

    public bool Equals(ClearRecentPlayersRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AgentId, other.AgentId)) return false;
      if (Program != other.Program) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (agentId_ != null) hash ^= AgentId.GetHashCode();
      if (Program != 0) hash ^= Program.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (agentId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AgentId);
      }
      if (Program != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(Program);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (agentId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AgentId);
      }
      if (Program != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Program);
      }
      return size;
    }

    public void MergeFrom(ClearRecentPlayersRequest other) {
      if (other == null) {
        return;
      }
      if (other.agentId_ != null) {
        if (agentId_ == null) {
          agentId_ = new Bgs.Protocol.EntityId();
        }
        AgentId.MergeFrom(other.AgentId);
      }
      if (other.Program != 0) {
        Program = other.Program;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (agentId_ == null) {
              agentId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(agentId_);
            break;
          }
          case 16: {
            Program = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class ClearRecentPlayersResponse : pb::IMessage<ClearRecentPlayersResponse> {
    private static readonly pb::MessageParser<ClearRecentPlayersResponse> _parser = new pb::MessageParser<ClearRecentPlayersResponse>(() => new ClearRecentPlayersResponse());
    public static pb::MessageParser<ClearRecentPlayersResponse> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[6]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public ClearRecentPlayersResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    public ClearRecentPlayersResponse(ClearRecentPlayersResponse other) : this() {
      playersRemoved_ = other.playersRemoved_.Clone();
    }

    public ClearRecentPlayersResponse Clone() {
      return new ClearRecentPlayersResponse(this);
    }

    /// <summary>Field number for the "players_removed" field.</summary>
    public const int PlayersRemovedFieldNumber = 1;
    private static readonly pb::FieldCodec<uint> _repeated_playersRemoved_codec
        = pb::FieldCodec.ForFixed32(10);
    private readonly pbc::RepeatedField<uint> playersRemoved_ = new pbc::RepeatedField<uint>();
    public pbc::RepeatedField<uint> PlayersRemoved {
      get { return playersRemoved_; }
    }

    public override bool Equals(object other) {
      return Equals(other as ClearRecentPlayersResponse);
    }

    public bool Equals(ClearRecentPlayersResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!playersRemoved_.Equals(other.playersRemoved_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= playersRemoved_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      playersRemoved_.WriteTo(output, _repeated_playersRemoved_codec);
    }

    public int CalculateSize() {
      int size = 0;
      size += playersRemoved_.CalculateSize(_repeated_playersRemoved_codec);
      return size;
    }

    public void MergeFrom(ClearRecentPlayersResponse other) {
      if (other == null) {
        return;
      }
      playersRemoved_.Add(other.playersRemoved_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10:
          case 13: {
            playersRemoved_.AddEntriesFrom(input, _repeated_playersRemoved_codec);
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class BlockPlayerRequest : pb::IMessage<BlockPlayerRequest> {
    private static readonly pb::MessageParser<BlockPlayerRequest> _parser = new pb::MessageParser<BlockPlayerRequest>(() => new BlockPlayerRequest());
    public static pb::MessageParser<BlockPlayerRequest> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[7]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public BlockPlayerRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    public BlockPlayerRequest(BlockPlayerRequest other) : this() {
      AgentId = other.agentId_ != null ? other.AgentId.Clone() : null;
      TargetId = other.targetId_ != null ? other.TargetId.Clone() : null;
      role_ = other.role_;
    }

    public BlockPlayerRequest Clone() {
      return new BlockPlayerRequest(this);
    }

    /// <summary>Field number for the "agent_id" field.</summary>
    public const int AgentIdFieldNumber = 1;
    private Bgs.Protocol.EntityId agentId_;
    public Bgs.Protocol.EntityId AgentId {
      get { return agentId_; }
      set {
        agentId_ = value;
      }
    }

    /// <summary>Field number for the "target_id" field.</summary>
    public const int TargetIdFieldNumber = 2;
    private Bgs.Protocol.EntityId targetId_;
    public Bgs.Protocol.EntityId TargetId {
      get { return targetId_; }
      set {
        targetId_ = value;
      }
    }

    /// <summary>Field number for the "role" field.</summary>
    public const int RoleFieldNumber = 3;
    private uint role_;
    public uint Role {
      get { return role_; }
      set {
        role_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as BlockPlayerRequest);
    }

    public bool Equals(BlockPlayerRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AgentId, other.AgentId)) return false;
      if (!object.Equals(TargetId, other.TargetId)) return false;
      if (Role != other.Role) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (agentId_ != null) hash ^= AgentId.GetHashCode();
      if (targetId_ != null) hash ^= TargetId.GetHashCode();
      if (Role != 0) hash ^= Role.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (agentId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AgentId);
      }
      if (targetId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(TargetId);
      }
      if (Role != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(Role);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (agentId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AgentId);
      }
      if (targetId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TargetId);
      }
      if (Role != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Role);
      }
      return size;
    }

    public void MergeFrom(BlockPlayerRequest other) {
      if (other == null) {
        return;
      }
      if (other.agentId_ != null) {
        if (agentId_ == null) {
          agentId_ = new Bgs.Protocol.EntityId();
        }
        AgentId.MergeFrom(other.AgentId);
      }
      if (other.targetId_ != null) {
        if (targetId_ == null) {
          targetId_ = new Bgs.Protocol.EntityId();
        }
        TargetId.MergeFrom(other.TargetId);
      }
      if (other.Role != 0) {
        Role = other.Role;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (agentId_ == null) {
              agentId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(agentId_);
            break;
          }
          case 18: {
            if (targetId_ == null) {
              targetId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(targetId_);
            break;
          }
          case 24: {
            Role = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class UnblockPlayerRequest : pb::IMessage<UnblockPlayerRequest> {
    private static readonly pb::MessageParser<UnblockPlayerRequest> _parser = new pb::MessageParser<UnblockPlayerRequest>(() => new UnblockPlayerRequest());
    public static pb::MessageParser<UnblockPlayerRequest> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[8]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public UnblockPlayerRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    public UnblockPlayerRequest(UnblockPlayerRequest other) : this() {
      AgentId = other.agentId_ != null ? other.AgentId.Clone() : null;
      TargetId = other.targetId_ != null ? other.TargetId.Clone() : null;
    }

    public UnblockPlayerRequest Clone() {
      return new UnblockPlayerRequest(this);
    }

    /// <summary>Field number for the "agent_id" field.</summary>
    public const int AgentIdFieldNumber = 1;
    private Bgs.Protocol.EntityId agentId_;
    public Bgs.Protocol.EntityId AgentId {
      get { return agentId_; }
      set {
        agentId_ = value;
      }
    }

    /// <summary>Field number for the "target_id" field.</summary>
    public const int TargetIdFieldNumber = 2;
    private Bgs.Protocol.EntityId targetId_;
    public Bgs.Protocol.EntityId TargetId {
      get { return targetId_; }
      set {
        targetId_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as UnblockPlayerRequest);
    }

    public bool Equals(UnblockPlayerRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AgentId, other.AgentId)) return false;
      if (!object.Equals(TargetId, other.TargetId)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (agentId_ != null) hash ^= AgentId.GetHashCode();
      if (targetId_ != null) hash ^= TargetId.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (agentId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AgentId);
      }
      if (targetId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(TargetId);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (agentId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AgentId);
      }
      if (targetId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TargetId);
      }
      return size;
    }

    public void MergeFrom(UnblockPlayerRequest other) {
      if (other == null) {
        return;
      }
      if (other.agentId_ != null) {
        if (agentId_ == null) {
          agentId_ = new Bgs.Protocol.EntityId();
        }
        AgentId.MergeFrom(other.AgentId);
      }
      if (other.targetId_ != null) {
        if (targetId_ == null) {
          targetId_ = new Bgs.Protocol.EntityId();
        }
        TargetId.MergeFrom(other.TargetId);
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (agentId_ == null) {
              agentId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(agentId_);
            break;
          }
          case 18: {
            if (targetId_ == null) {
              targetId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(targetId_);
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class BlockedPlayerAddedNotification : pb::IMessage<BlockedPlayerAddedNotification> {
    private static readonly pb::MessageParser<BlockedPlayerAddedNotification> _parser = new pb::MessageParser<BlockedPlayerAddedNotification>(() => new BlockedPlayerAddedNotification());
    public static pb::MessageParser<BlockedPlayerAddedNotification> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[9]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public BlockedPlayerAddedNotification() {
      OnConstruction();
    }

    partial void OnConstruction();

    public BlockedPlayerAddedNotification(BlockedPlayerAddedNotification other) : this() {
      Player = other.player_ != null ? other.Player.Clone() : null;
      GameAccountId = other.gameAccountId_ != null ? other.GameAccountId.Clone() : null;
      AccountId = other.accountId_ != null ? other.AccountId.Clone() : null;
    }

    public BlockedPlayerAddedNotification Clone() {
      return new BlockedPlayerAddedNotification(this);
    }

    /// <summary>Field number for the "player" field.</summary>
    public const int PlayerFieldNumber = 1;
    private Bgs.Protocol.UserManager.V1.BlockedPlayer player_;
    public Bgs.Protocol.UserManager.V1.BlockedPlayer Player {
      get { return player_; }
      set {
        player_ = value;
      }
    }

    /// <summary>Field number for the "game_account_id" field.</summary>
    public const int GameAccountIdFieldNumber = 2;
    private Bgs.Protocol.EntityId gameAccountId_;
    public Bgs.Protocol.EntityId GameAccountId {
      get { return gameAccountId_; }
      set {
        gameAccountId_ = value;
      }
    }

    /// <summary>Field number for the "account_id" field.</summary>
    public const int AccountIdFieldNumber = 3;
    private Bgs.Protocol.EntityId accountId_;
    public Bgs.Protocol.EntityId AccountId {
      get { return accountId_; }
      set {
        accountId_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as BlockedPlayerAddedNotification);
    }

    public bool Equals(BlockedPlayerAddedNotification other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Player, other.Player)) return false;
      if (!object.Equals(GameAccountId, other.GameAccountId)) return false;
      if (!object.Equals(AccountId, other.AccountId)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (player_ != null) hash ^= Player.GetHashCode();
      if (gameAccountId_ != null) hash ^= GameAccountId.GetHashCode();
      if (accountId_ != null) hash ^= AccountId.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (player_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Player);
      }
      if (gameAccountId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(GameAccountId);
      }
      if (accountId_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(AccountId);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (player_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Player);
      }
      if (gameAccountId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccountId);
      }
      if (accountId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AccountId);
      }
      return size;
    }

    public void MergeFrom(BlockedPlayerAddedNotification other) {
      if (other == null) {
        return;
      }
      if (other.player_ != null) {
        if (player_ == null) {
          player_ = new Bgs.Protocol.UserManager.V1.BlockedPlayer();
        }
        Player.MergeFrom(other.Player);
      }
      if (other.gameAccountId_ != null) {
        if (gameAccountId_ == null) {
          gameAccountId_ = new Bgs.Protocol.EntityId();
        }
        GameAccountId.MergeFrom(other.GameAccountId);
      }
      if (other.accountId_ != null) {
        if (accountId_ == null) {
          accountId_ = new Bgs.Protocol.EntityId();
        }
        AccountId.MergeFrom(other.AccountId);
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (player_ == null) {
              player_ = new Bgs.Protocol.UserManager.V1.BlockedPlayer();
            }
            input.ReadMessage(player_);
            break;
          }
          case 18: {
            if (gameAccountId_ == null) {
              gameAccountId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(gameAccountId_);
            break;
          }
          case 26: {
            if (accountId_ == null) {
              accountId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(accountId_);
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class BlockedPlayerRemovedNotification : pb::IMessage<BlockedPlayerRemovedNotification> {
    private static readonly pb::MessageParser<BlockedPlayerRemovedNotification> _parser = new pb::MessageParser<BlockedPlayerRemovedNotification>(() => new BlockedPlayerRemovedNotification());
    public static pb::MessageParser<BlockedPlayerRemovedNotification> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[10]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public BlockedPlayerRemovedNotification() {
      OnConstruction();
    }

    partial void OnConstruction();

    public BlockedPlayerRemovedNotification(BlockedPlayerRemovedNotification other) : this() {
      Player = other.player_ != null ? other.Player.Clone() : null;
      GameAccountId = other.gameAccountId_ != null ? other.GameAccountId.Clone() : null;
      AccountId = other.accountId_ != null ? other.AccountId.Clone() : null;
    }

    public BlockedPlayerRemovedNotification Clone() {
      return new BlockedPlayerRemovedNotification(this);
    }

    /// <summary>Field number for the "player" field.</summary>
    public const int PlayerFieldNumber = 1;
    private Bgs.Protocol.UserManager.V1.BlockedPlayer player_;
    public Bgs.Protocol.UserManager.V1.BlockedPlayer Player {
      get { return player_; }
      set {
        player_ = value;
      }
    }

    /// <summary>Field number for the "game_account_id" field.</summary>
    public const int GameAccountIdFieldNumber = 2;
    private Bgs.Protocol.EntityId gameAccountId_;
    public Bgs.Protocol.EntityId GameAccountId {
      get { return gameAccountId_; }
      set {
        gameAccountId_ = value;
      }
    }

    /// <summary>Field number for the "account_id" field.</summary>
    public const int AccountIdFieldNumber = 3;
    private Bgs.Protocol.EntityId accountId_;
    public Bgs.Protocol.EntityId AccountId {
      get { return accountId_; }
      set {
        accountId_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as BlockedPlayerRemovedNotification);
    }

    public bool Equals(BlockedPlayerRemovedNotification other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Player, other.Player)) return false;
      if (!object.Equals(GameAccountId, other.GameAccountId)) return false;
      if (!object.Equals(AccountId, other.AccountId)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (player_ != null) hash ^= Player.GetHashCode();
      if (gameAccountId_ != null) hash ^= GameAccountId.GetHashCode();
      if (accountId_ != null) hash ^= AccountId.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (player_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Player);
      }
      if (gameAccountId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(GameAccountId);
      }
      if (accountId_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(AccountId);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (player_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Player);
      }
      if (gameAccountId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccountId);
      }
      if (accountId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AccountId);
      }
      return size;
    }

    public void MergeFrom(BlockedPlayerRemovedNotification other) {
      if (other == null) {
        return;
      }
      if (other.player_ != null) {
        if (player_ == null) {
          player_ = new Bgs.Protocol.UserManager.V1.BlockedPlayer();
        }
        Player.MergeFrom(other.Player);
      }
      if (other.gameAccountId_ != null) {
        if (gameAccountId_ == null) {
          gameAccountId_ = new Bgs.Protocol.EntityId();
        }
        GameAccountId.MergeFrom(other.GameAccountId);
      }
      if (other.accountId_ != null) {
        if (accountId_ == null) {
          accountId_ = new Bgs.Protocol.EntityId();
        }
        AccountId.MergeFrom(other.AccountId);
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (player_ == null) {
              player_ = new Bgs.Protocol.UserManager.V1.BlockedPlayer();
            }
            input.ReadMessage(player_);
            break;
          }
          case 18: {
            if (gameAccountId_ == null) {
              gameAccountId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(gameAccountId_);
            break;
          }
          case 26: {
            if (accountId_ == null) {
              accountId_ = new Bgs.Protocol.EntityId();
            }
            input.ReadMessage(accountId_);
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class RecentPlayersAddedNotification : pb::IMessage<RecentPlayersAddedNotification> {
    private static readonly pb::MessageParser<RecentPlayersAddedNotification> _parser = new pb::MessageParser<RecentPlayersAddedNotification>(() => new RecentPlayersAddedNotification());
    public static pb::MessageParser<RecentPlayersAddedNotification> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[11]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public RecentPlayersAddedNotification() {
      OnConstruction();
    }

    partial void OnConstruction();

    public RecentPlayersAddedNotification(RecentPlayersAddedNotification other) : this() {
      player_ = other.player_.Clone();
    }

    public RecentPlayersAddedNotification Clone() {
      return new RecentPlayersAddedNotification(this);
    }

    /// <summary>Field number for the "player" field.</summary>
    public const int PlayerFieldNumber = 1;
    private static readonly pb::FieldCodec<Bgs.Protocol.UserManager.V1.RecentPlayer> _repeated_player_codec
        = pb::FieldCodec.ForMessage(10, Bgs.Protocol.UserManager.V1.RecentPlayer.Parser);
    private readonly pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> player_ = new pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer>();
    public pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> Player {
      get { return player_; }
    }

    public override bool Equals(object other) {
      return Equals(other as RecentPlayersAddedNotification);
    }

    public bool Equals(RecentPlayersAddedNotification other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!player_.Equals(other.player_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= player_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      player_.WriteTo(output, _repeated_player_codec);
    }

    public int CalculateSize() {
      int size = 0;
      size += player_.CalculateSize(_repeated_player_codec);
      return size;
    }

    public void MergeFrom(RecentPlayersAddedNotification other) {
      if (other == null) {
        return;
      }
      player_.Add(other.player_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            player_.AddEntriesFrom(input, _repeated_player_codec);
            break;
          }
        }
      }
    }

  }

  [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  public sealed partial class RecentPlayersRemovedNotification : pb::IMessage<RecentPlayersRemovedNotification> {
    private static readonly pb::MessageParser<RecentPlayersRemovedNotification> _parser = new pb::MessageParser<RecentPlayersRemovedNotification>(() => new RecentPlayersRemovedNotification());
    public static pb::MessageParser<RecentPlayersRemovedNotification> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return Bgs.Protocol.UserManager.V1.UserManagerServiceReflection.Descriptor.MessageTypes[12]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public RecentPlayersRemovedNotification() {
      OnConstruction();
    }

    partial void OnConstruction();

    public RecentPlayersRemovedNotification(RecentPlayersRemovedNotification other) : this() {
      player_ = other.player_.Clone();
    }

    public RecentPlayersRemovedNotification Clone() {
      return new RecentPlayersRemovedNotification(this);
    }

    /// <summary>Field number for the "player" field.</summary>
    public const int PlayerFieldNumber = 1;
    private static readonly pb::FieldCodec<Bgs.Protocol.UserManager.V1.RecentPlayer> _repeated_player_codec
        = pb::FieldCodec.ForMessage(10, Bgs.Protocol.UserManager.V1.RecentPlayer.Parser);
    private readonly pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> player_ = new pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer>();
    public pbc::RepeatedField<Bgs.Protocol.UserManager.V1.RecentPlayer> Player {
      get { return player_; }
    }

    public override bool Equals(object other) {
      return Equals(other as RecentPlayersRemovedNotification);
    }

    public bool Equals(RecentPlayersRemovedNotification other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!player_.Equals(other.player_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= player_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      player_.WriteTo(output, _repeated_player_codec);
    }

    public int CalculateSize() {
      int size = 0;
      size += player_.CalculateSize(_repeated_player_codec);
      return size;
    }

    public void MergeFrom(RecentPlayersRemovedNotification other) {
      if (other == null) {
        return;
      }
      player_.Add(other.player_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            player_.AddEntriesFrom(input, _repeated_player_codec);
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
