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

package com.akaxin.proto.core;

public final class CoreProto {
  private CoreProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code core.HeaderKey}
   */
  public enum HeaderKey
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     *0-500 分配给CLIENT_SOCKET
     * </pre>
     *
     * <code>CLIENT_SOCKET_VERSION = 0;</code>
     */
    CLIENT_SOCKET_VERSION(0),
    /**
     * <code>CLIENT_SOCKET_SITE_SESSION_ID = 1;</code>
     */
    CLIENT_SOCKET_SITE_SESSION_ID(1),
    /**
     * <code>CLIENT_SOCKET_PLATFORM_SESSION_ID = 2;</code>
     */
    CLIENT_SOCKET_PLATFORM_SESSION_ID(2),
    /**
     * <code>CLIENT_SOCKET_DEVICE_ID = 3;</code>
     */
    CLIENT_SOCKET_DEVICE_ID(3),
    /**
     * <pre>
     *客户端正在使用的语言, cn/en
     * </pre>
     *
     * <code>CLIENT_SOCKET_LANGUAGE = 4;</code>
     */
    CLIENT_SOCKET_LANGUAGE(4),
    /**
     * <pre>
     *客户端类型，见client.proto中的ClientType
     * </pre>
     *
     * <code>CLIENT_SOCKET_TYPE = 5;</code>
     */
    CLIENT_SOCKET_TYPE(5),
    /**
     * <pre>
     *501-1000 分配给CLIENT_REQUEST
     * </pre>
     *
     * <code>CLIENT_REQUEST_REFERER = 501;</code>
     */
    CLIENT_REQUEST_REFERER(501),
    /**
     * <pre>
     *客户端访问的服务host
     * </pre>
     *
     * <code>CLIENT_REQUEST_SERVER_HOST = 502;</code>
     */
    CLIENT_REQUEST_SERVER_HOST(502),
    /**
     * <pre>
     *客户端访问的服务port
     * </pre>
     *
     * <code>CLIENT_REQUEST_SERVER_PORT = 503;</code>
     */
    CLIENT_REQUEST_SERVER_PORT(503),
    /**
     * <pre>
     *1001-2000 分配给SITE_SERVER
     * </pre>
     *
     * <code>SITE_SERVER_VERSION = 1001;</code>
     */
    SITE_SERVER_VERSION(1001),
    /**
     * <pre>
     *服务端host
     * </pre>
     *
     * <code>SITE_SERVER_HOST = 1002;</code>
     */
    SITE_SERVER_HOST(1002),
    /**
     * <pre>
     *服务端port
     * </pre>
     *
     * <code>SITE_SERVER_PORT = 1003;</code>
     */
    SITE_SERVER_PORT(1003),
    /**
     * <pre>
     *3001-4000 分配给PLUGIN
     * </pre>
     *
     * <code>PLUGIN_CLIENT_REFERER = 3001;</code>
     */
    PLUGIN_CLIENT_REFERER(3001),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     *0-500 分配给CLIENT_SOCKET
     * </pre>
     *
     * <code>CLIENT_SOCKET_VERSION = 0;</code>
     */
    public static final int CLIENT_SOCKET_VERSION_VALUE = 0;
    /**
     * <code>CLIENT_SOCKET_SITE_SESSION_ID = 1;</code>
     */
    public static final int CLIENT_SOCKET_SITE_SESSION_ID_VALUE = 1;
    /**
     * <code>CLIENT_SOCKET_PLATFORM_SESSION_ID = 2;</code>
     */
    public static final int CLIENT_SOCKET_PLATFORM_SESSION_ID_VALUE = 2;
    /**
     * <code>CLIENT_SOCKET_DEVICE_ID = 3;</code>
     */
    public static final int CLIENT_SOCKET_DEVICE_ID_VALUE = 3;
    /**
     * <pre>
     *客户端正在使用的语言, cn/en
     * </pre>
     *
     * <code>CLIENT_SOCKET_LANGUAGE = 4;</code>
     */
    public static final int CLIENT_SOCKET_LANGUAGE_VALUE = 4;
    /**
     * <pre>
     *客户端类型，见client.proto中的ClientType
     * </pre>
     *
     * <code>CLIENT_SOCKET_TYPE = 5;</code>
     */
    public static final int CLIENT_SOCKET_TYPE_VALUE = 5;
    /**
     * <pre>
     *501-1000 分配给CLIENT_REQUEST
     * </pre>
     *
     * <code>CLIENT_REQUEST_REFERER = 501;</code>
     */
    public static final int CLIENT_REQUEST_REFERER_VALUE = 501;
    /**
     * <pre>
     *客户端访问的服务host
     * </pre>
     *
     * <code>CLIENT_REQUEST_SERVER_HOST = 502;</code>
     */
    public static final int CLIENT_REQUEST_SERVER_HOST_VALUE = 502;
    /**
     * <pre>
     *客户端访问的服务port
     * </pre>
     *
     * <code>CLIENT_REQUEST_SERVER_PORT = 503;</code>
     */
    public static final int CLIENT_REQUEST_SERVER_PORT_VALUE = 503;
    /**
     * <pre>
     *1001-2000 分配给SITE_SERVER
     * </pre>
     *
     * <code>SITE_SERVER_VERSION = 1001;</code>
     */
    public static final int SITE_SERVER_VERSION_VALUE = 1001;
    /**
     * <pre>
     *服务端host
     * </pre>
     *
     * <code>SITE_SERVER_HOST = 1002;</code>
     */
    public static final int SITE_SERVER_HOST_VALUE = 1002;
    /**
     * <pre>
     *服务端port
     * </pre>
     *
     * <code>SITE_SERVER_PORT = 1003;</code>
     */
    public static final int SITE_SERVER_PORT_VALUE = 1003;
    /**
     * <pre>
     *3001-4000 分配给PLUGIN
     * </pre>
     *
     * <code>PLUGIN_CLIENT_REFERER = 3001;</code>
     */
    public static final int PLUGIN_CLIENT_REFERER_VALUE = 3001;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static HeaderKey valueOf(int value) {
      return forNumber(value);
    }

    public static HeaderKey forNumber(int value) {
      switch (value) {
        case 0: return CLIENT_SOCKET_VERSION;
        case 1: return CLIENT_SOCKET_SITE_SESSION_ID;
        case 2: return CLIENT_SOCKET_PLATFORM_SESSION_ID;
        case 3: return CLIENT_SOCKET_DEVICE_ID;
        case 4: return CLIENT_SOCKET_LANGUAGE;
        case 5: return CLIENT_SOCKET_TYPE;
        case 501: return CLIENT_REQUEST_REFERER;
        case 502: return CLIENT_REQUEST_SERVER_HOST;
        case 503: return CLIENT_REQUEST_SERVER_PORT;
        case 1001: return SITE_SERVER_VERSION;
        case 1002: return SITE_SERVER_HOST;
        case 1003: return SITE_SERVER_PORT;
        case 3001: return PLUGIN_CLIENT_REFERER;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<HeaderKey>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        HeaderKey> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<HeaderKey>() {
            public HeaderKey findValueByNumber(int number) {
              return HeaderKey.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.getDescriptor().getEnumTypes().get(0);
    }

    private static final HeaderKey[] VALUES = values();

    public static HeaderKey valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private HeaderKey(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:core.HeaderKey)
  }

  /**
   * <pre>
   *以下内容为共用消息内容
   *消息类型
   * </pre>
   *
   * Protobuf enum {@code core.MsgType}
   */
  public enum MsgType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     *系统通知
     * </pre>
     *
     * <code>NOTICE = 0;</code>
     */
    NOTICE(0),
    /**
     * <pre>
     *每条发送的消息，发送一个消息状态的回执
     * </pre>
     *
     * <code>MSG_STATUS = 1;</code>
     */
    MSG_STATUS(1),
    /**
     * <pre>
     *二人文本消息
     * </pre>
     *
     * <code>TEXT = 3;</code>
     */
    TEXT(3),
    /**
     * <pre>
     *加密二人文本消息
     * </pre>
     *
     * <code>SECRET_TEXT = 4;</code>
     */
    SECRET_TEXT(4),
    /**
     * <pre>
     *群聊文本消息
     * </pre>
     *
     * <code>GROUP_TEXT = 5;</code>
     */
    GROUP_TEXT(5),
    /**
     * <pre>
     *群聊加密文本消息(暂未使用)
     * </pre>
     *
     * <code>GROUP_SECRET_TEXT = 6;</code>
     */
    GROUP_SECRET_TEXT(6),
    /**
     * <pre>
     *二人图片消息
     * </pre>
     *
     * <code>IMAGE = 7;</code>
     */
    IMAGE(7),
    /**
     * <pre>
     *二人加密图片消息
     * </pre>
     *
     * <code>SECRET_IMAGE = 8;</code>
     */
    SECRET_IMAGE(8),
    /**
     * <pre>
     *群图片消息
     * </pre>
     *
     * <code>GROUP_IMAGE = 9;</code>
     */
    GROUP_IMAGE(9),
    /**
     * <pre>
     *群加密图片(暂未使用)
     * </pre>
     *
     * <code>GROUP_SECRET_IMAGE = 10;</code>
     */
    GROUP_SECRET_IMAGE(10),
    /**
     * <pre>
     *二人语音消息
     * </pre>
     *
     * <code>VOICE = 11;</code>
     */
    VOICE(11),
    /**
     * <pre>
     *二人加密语音
     * </pre>
     *
     * <code>SECRET_VOICE = 12;</code>
     */
    SECRET_VOICE(12),
    /**
     * <pre>
     *群语音
     * </pre>
     *
     * <code>GROUP_VOICE = 13;</code>
     */
    GROUP_VOICE(13),
    /**
     * <pre>
     *群加密语音(暂未使用)
     * </pre>
     *
     * <code>GROUP_SECRET_VOICE = 14;</code>
     */
    GROUP_SECRET_VOICE(14),
    /**
     * <pre>
     *二人地图
     * </pre>
     *
     * <code>U2_MAP = 15;</code>
     */
    U2_MAP(15),
    /**
     * <pre>
     *二人加密地图消息
     * </pre>
     *
     * <code>U2_SECRET_MAP = 16;</code>
     */
    U2_SECRET_MAP(16),
    /**
     * <pre>
     *群地图
     * </pre>
     *
     * <code>GROUP_MAP = 17;</code>
     */
    GROUP_MAP(17),
    /**
     * <pre>
     *群加密地图消息
     * </pre>
     *
     * <code>GROUP_SECRET_MAP = 18;</code>
     */
    GROUP_SECRET_MAP(18),
    /**
     * <pre>
     *二人：消息中的通知消息
     * </pre>
     *
     * <code>U2_NOTICE = 19;</code>
     */
    U2_NOTICE(19),
    /**
     * <pre>
     *群：消息中的通知消息
     * </pre>
     *
     * <code>GROUP_NOTICE = 20;</code>
     */
    GROUP_NOTICE(20),
    /**
     * <pre>
     *二人撤回消息
     * </pre>
     *
     * <code>U2_RECALL = 21;</code>
     */
    U2_RECALL(21),
    /**
     * <pre>
     *群撤回消息
     * </pre>
     *
     * <code>GROUP_RECALL = 22;</code>
     */
    GROUP_RECALL(22),
    /**
     * <pre>
     *二人：消息中的WEB内嵌消息
     * </pre>
     *
     * <code>U2_WEB = 23;</code>
     */
    U2_WEB(23),
    /**
     * <pre>
     *群：消息中的WEB内嵌消息
     * </pre>
     *
     * <code>GROUP_WEB = 24;</code>
     */
    GROUP_WEB(24),
    /**
     * <pre>
     *二人：内嵌WEB通知消息
     * </pre>
     *
     * <code>U2_WEB_NOTICE = 25;</code>
     */
    U2_WEB_NOTICE(25),
    /**
     * <pre>
     *群：内嵌WEB通知消息
     * </pre>
     *
     * <code>GROUP_WEB_NOTICE = 26;</code>
     */
    GROUP_WEB_NOTICE(26),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     *系统通知
     * </pre>
     *
     * <code>NOTICE = 0;</code>
     */
    public static final int NOTICE_VALUE = 0;
    /**
     * <pre>
     *每条发送的消息，发送一个消息状态的回执
     * </pre>
     *
     * <code>MSG_STATUS = 1;</code>
     */
    public static final int MSG_STATUS_VALUE = 1;
    /**
     * <pre>
     *二人文本消息
     * </pre>
     *
     * <code>TEXT = 3;</code>
     */
    public static final int TEXT_VALUE = 3;
    /**
     * <pre>
     *加密二人文本消息
     * </pre>
     *
     * <code>SECRET_TEXT = 4;</code>
     */
    public static final int SECRET_TEXT_VALUE = 4;
    /**
     * <pre>
     *群聊文本消息
     * </pre>
     *
     * <code>GROUP_TEXT = 5;</code>
     */
    public static final int GROUP_TEXT_VALUE = 5;
    /**
     * <pre>
     *群聊加密文本消息(暂未使用)
     * </pre>
     *
     * <code>GROUP_SECRET_TEXT = 6;</code>
     */
    public static final int GROUP_SECRET_TEXT_VALUE = 6;
    /**
     * <pre>
     *二人图片消息
     * </pre>
     *
     * <code>IMAGE = 7;</code>
     */
    public static final int IMAGE_VALUE = 7;
    /**
     * <pre>
     *二人加密图片消息
     * </pre>
     *
     * <code>SECRET_IMAGE = 8;</code>
     */
    public static final int SECRET_IMAGE_VALUE = 8;
    /**
     * <pre>
     *群图片消息
     * </pre>
     *
     * <code>GROUP_IMAGE = 9;</code>
     */
    public static final int GROUP_IMAGE_VALUE = 9;
    /**
     * <pre>
     *群加密图片(暂未使用)
     * </pre>
     *
     * <code>GROUP_SECRET_IMAGE = 10;</code>
     */
    public static final int GROUP_SECRET_IMAGE_VALUE = 10;
    /**
     * <pre>
     *二人语音消息
     * </pre>
     *
     * <code>VOICE = 11;</code>
     */
    public static final int VOICE_VALUE = 11;
    /**
     * <pre>
     *二人加密语音
     * </pre>
     *
     * <code>SECRET_VOICE = 12;</code>
     */
    public static final int SECRET_VOICE_VALUE = 12;
    /**
     * <pre>
     *群语音
     * </pre>
     *
     * <code>GROUP_VOICE = 13;</code>
     */
    public static final int GROUP_VOICE_VALUE = 13;
    /**
     * <pre>
     *群加密语音(暂未使用)
     * </pre>
     *
     * <code>GROUP_SECRET_VOICE = 14;</code>
     */
    public static final int GROUP_SECRET_VOICE_VALUE = 14;
    /**
     * <pre>
     *二人地图
     * </pre>
     *
     * <code>U2_MAP = 15;</code>
     */
    public static final int U2_MAP_VALUE = 15;
    /**
     * <pre>
     *二人加密地图消息
     * </pre>
     *
     * <code>U2_SECRET_MAP = 16;</code>
     */
    public static final int U2_SECRET_MAP_VALUE = 16;
    /**
     * <pre>
     *群地图
     * </pre>
     *
     * <code>GROUP_MAP = 17;</code>
     */
    public static final int GROUP_MAP_VALUE = 17;
    /**
     * <pre>
     *群加密地图消息
     * </pre>
     *
     * <code>GROUP_SECRET_MAP = 18;</code>
     */
    public static final int GROUP_SECRET_MAP_VALUE = 18;
    /**
     * <pre>
     *二人：消息中的通知消息
     * </pre>
     *
     * <code>U2_NOTICE = 19;</code>
     */
    public static final int U2_NOTICE_VALUE = 19;
    /**
     * <pre>
     *群：消息中的通知消息
     * </pre>
     *
     * <code>GROUP_NOTICE = 20;</code>
     */
    public static final int GROUP_NOTICE_VALUE = 20;
    /**
     * <pre>
     *二人撤回消息
     * </pre>
     *
     * <code>U2_RECALL = 21;</code>
     */
    public static final int U2_RECALL_VALUE = 21;
    /**
     * <pre>
     *群撤回消息
     * </pre>
     *
     * <code>GROUP_RECALL = 22;</code>
     */
    public static final int GROUP_RECALL_VALUE = 22;
    /**
     * <pre>
     *二人：消息中的WEB内嵌消息
     * </pre>
     *
     * <code>U2_WEB = 23;</code>
     */
    public static final int U2_WEB_VALUE = 23;
    /**
     * <pre>
     *群：消息中的WEB内嵌消息
     * </pre>
     *
     * <code>GROUP_WEB = 24;</code>
     */
    public static final int GROUP_WEB_VALUE = 24;
    /**
     * <pre>
     *二人：内嵌WEB通知消息
     * </pre>
     *
     * <code>U2_WEB_NOTICE = 25;</code>
     */
    public static final int U2_WEB_NOTICE_VALUE = 25;
    /**
     * <pre>
     *群：内嵌WEB通知消息
     * </pre>
     *
     * <code>GROUP_WEB_NOTICE = 26;</code>
     */
    public static final int GROUP_WEB_NOTICE_VALUE = 26;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static MsgType valueOf(int value) {
      return forNumber(value);
    }

    public static MsgType forNumber(int value) {
      switch (value) {
        case 0: return NOTICE;
        case 1: return MSG_STATUS;
        case 3: return TEXT;
        case 4: return SECRET_TEXT;
        case 5: return GROUP_TEXT;
        case 6: return GROUP_SECRET_TEXT;
        case 7: return IMAGE;
        case 8: return SECRET_IMAGE;
        case 9: return GROUP_IMAGE;
        case 10: return GROUP_SECRET_IMAGE;
        case 11: return VOICE;
        case 12: return SECRET_VOICE;
        case 13: return GROUP_VOICE;
        case 14: return GROUP_SECRET_VOICE;
        case 15: return U2_MAP;
        case 16: return U2_SECRET_MAP;
        case 17: return GROUP_MAP;
        case 18: return GROUP_SECRET_MAP;
        case 19: return U2_NOTICE;
        case 20: return GROUP_NOTICE;
        case 21: return U2_RECALL;
        case 22: return GROUP_RECALL;
        case 23: return U2_WEB;
        case 24: return GROUP_WEB;
        case 25: return U2_WEB_NOTICE;
        case 26: return GROUP_WEB_NOTICE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<MsgType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        MsgType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<MsgType>() {
            public MsgType findValueByNumber(int number) {
              return MsgType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.getDescriptor().getEnumTypes().get(1);
    }

    private static final MsgType[] VALUES = values();

    public static MsgType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private MsgType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:core.MsgType)
  }

  public interface ErrorInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.ErrorInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string code = 1;</code>
     */
    java.lang.String getCode();
    /**
     * <code>string code = 1;</code>
     */
    com.google.protobuf.ByteString
        getCodeBytes();

    /**
     * <code>string info = 2;</code>
     */
    java.lang.String getInfo();
    /**
     * <code>string info = 2;</code>
     */
    com.google.protobuf.ByteString
        getInfoBytes();
  }
  /**
   * <pre>
   * 错误信息
   *code="success" 请求成功
   *code="error" 请求失败，客户端不做任何处理
   *code="error.alter" 请求失败，客户端展示错误info
   *code="error.session" api请求||im请求校验session失败
   *code="error.login.need_register" 用户登陆返回此值需要告诉用户注册
   *code="error.login.needRegister" 用户登陆返回此值需要告诉用户注册
   *code="error.phone.same" 用户绑定身份，表示二者已经存在绑定
   * </pre>
   *
   * Protobuf type {@code core.ErrorInfo}
   */
  public  static final class ErrorInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.ErrorInfo)
      ErrorInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ErrorInfo.newBuilder() to construct.
    private ErrorInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ErrorInfo() {
      code_ = "";
      info_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ErrorInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              code_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              info_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_ErrorInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_ErrorInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.ErrorInfo.class, com.akaxin.proto.core.CoreProto.ErrorInfo.Builder.class);
    }

    public static final int CODE_FIELD_NUMBER = 1;
    private volatile java.lang.Object code_;
    /**
     * <code>string code = 1;</code>
     */
    public java.lang.String getCode() {
      java.lang.Object ref = code_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        code_ = s;
        return s;
      }
    }
    /**
     * <code>string code = 1;</code>
     */
    public com.google.protobuf.ByteString
        getCodeBytes() {
      java.lang.Object ref = code_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        code_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INFO_FIELD_NUMBER = 2;
    private volatile java.lang.Object info_;
    /**
     * <code>string info = 2;</code>
     */
    public java.lang.String getInfo() {
      java.lang.Object ref = info_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        info_ = s;
        return s;
      }
    }
    /**
     * <code>string info = 2;</code>
     */
    public com.google.protobuf.ByteString
        getInfoBytes() {
      java.lang.Object ref = info_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        info_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, code_);
      }
      if (!getInfoBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, info_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, code_);
      }
      if (!getInfoBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, info_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.ErrorInfo)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.ErrorInfo other = (com.akaxin.proto.core.CoreProto.ErrorInfo) obj;

      boolean result = true;
      result = result && getCode()
          .equals(other.getCode());
      result = result && getInfo()
          .equals(other.getInfo());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode().hashCode();
      hash = (37 * hash) + INFO_FIELD_NUMBER;
      hash = (53 * hash) + getInfo().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.ErrorInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.ErrorInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * 错误信息
     *code="success" 请求成功
     *code="error" 请求失败，客户端不做任何处理
     *code="error.alter" 请求失败，客户端展示错误info
     *code="error.session" api请求||im请求校验session失败
     *code="error.login.need_register" 用户登陆返回此值需要告诉用户注册
     *code="error.login.needRegister" 用户登陆返回此值需要告诉用户注册
     *code="error.phone.same" 用户绑定身份，表示二者已经存在绑定
     * </pre>
     *
     * Protobuf type {@code core.ErrorInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.ErrorInfo)
        com.akaxin.proto.core.CoreProto.ErrorInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_ErrorInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_ErrorInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.ErrorInfo.class, com.akaxin.proto.core.CoreProto.ErrorInfo.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.ErrorInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        code_ = "";

        info_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_ErrorInfo_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.ErrorInfo getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.ErrorInfo.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.ErrorInfo build() {
        com.akaxin.proto.core.CoreProto.ErrorInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.ErrorInfo buildPartial() {
        com.akaxin.proto.core.CoreProto.ErrorInfo result = new com.akaxin.proto.core.CoreProto.ErrorInfo(this);
        result.code_ = code_;
        result.info_ = info_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.ErrorInfo) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.ErrorInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.ErrorInfo other) {
        if (other == com.akaxin.proto.core.CoreProto.ErrorInfo.getDefaultInstance()) return this;
        if (!other.getCode().isEmpty()) {
          code_ = other.code_;
          onChanged();
        }
        if (!other.getInfo().isEmpty()) {
          info_ = other.info_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.ErrorInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.ErrorInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object code_ = "";
      /**
       * <code>string code = 1;</code>
       */
      public java.lang.String getCode() {
        java.lang.Object ref = code_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          code_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string code = 1;</code>
       */
      public com.google.protobuf.ByteString
          getCodeBytes() {
        java.lang.Object ref = code_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          code_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string code = 1;</code>
       */
      public Builder setCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        code_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string code = 1;</code>
       */
      public Builder clearCode() {
        
        code_ = getDefaultInstance().getCode();
        onChanged();
        return this;
      }
      /**
       * <code>string code = 1;</code>
       */
      public Builder setCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        code_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object info_ = "";
      /**
       * <code>string info = 2;</code>
       */
      public java.lang.String getInfo() {
        java.lang.Object ref = info_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          info_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string info = 2;</code>
       */
      public com.google.protobuf.ByteString
          getInfoBytes() {
        java.lang.Object ref = info_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          info_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string info = 2;</code>
       */
      public Builder setInfo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        info_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string info = 2;</code>
       */
      public Builder clearInfo() {
        
        info_ = getDefaultInstance().getInfo();
        onChanged();
        return this;
      }
      /**
       * <code>string info = 2;</code>
       */
      public Builder setInfoBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        info_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.ErrorInfo)
    }

    // @@protoc_insertion_point(class_scope:core.ErrorInfo)
    private static final com.akaxin.proto.core.CoreProto.ErrorInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.ErrorInfo();
    }

    public static com.akaxin.proto.core.CoreProto.ErrorInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ErrorInfo>
        PARSER = new com.google.protobuf.AbstractParser<ErrorInfo>() {
      public ErrorInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ErrorInfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ErrorInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ErrorInfo> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.ErrorInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NoneResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.NoneResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * 代表无响应，用户编写rpc service时，因为protobuf要求idl文件中必须包含一个返回值
   * </pre>
   *
   * Protobuf type {@code core.NoneResponse}
   */
  public  static final class NoneResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.NoneResponse)
      NoneResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NoneResponse.newBuilder() to construct.
    private NoneResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NoneResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private NoneResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_NoneResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_NoneResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.NoneResponse.class, com.akaxin.proto.core.CoreProto.NoneResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.NoneResponse)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.NoneResponse other = (com.akaxin.proto.core.CoreProto.NoneResponse) obj;

      boolean result = true;
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.NoneResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.NoneResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * 代表无响应，用户编写rpc service时，因为protobuf要求idl文件中必须包含一个返回值
     * </pre>
     *
     * Protobuf type {@code core.NoneResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.NoneResponse)
        com.akaxin.proto.core.CoreProto.NoneResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_NoneResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_NoneResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.NoneResponse.class, com.akaxin.proto.core.CoreProto.NoneResponse.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.NoneResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_NoneResponse_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.NoneResponse getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.NoneResponse.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.NoneResponse build() {
        com.akaxin.proto.core.CoreProto.NoneResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.NoneResponse buildPartial() {
        com.akaxin.proto.core.CoreProto.NoneResponse result = new com.akaxin.proto.core.CoreProto.NoneResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.NoneResponse) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.NoneResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.NoneResponse other) {
        if (other == com.akaxin.proto.core.CoreProto.NoneResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.NoneResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.NoneResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.NoneResponse)
    }

    // @@protoc_insertion_point(class_scope:core.NoneResponse)
    private static final com.akaxin.proto.core.CoreProto.NoneResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.NoneResponse();
    }

    public static com.akaxin.proto.core.CoreProto.NoneResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NoneResponse>
        PARSER = new com.google.protobuf.AbstractParser<NoneResponse>() {
      public NoneResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new NoneResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<NoneResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NoneResponse> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.NoneResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransportPackageDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.TransportPackageData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *错误信息，如果err不为null，data很有可能是无用的。
     * </pre>
     *
     * <code>.core.ErrorInfo err = 1;</code>
     */
    boolean hasErr();
    /**
     * <pre>
     *错误信息，如果err不为null，data很有可能是无用的。
     * </pre>
     *
     * <code>.core.ErrorInfo err = 1;</code>
     */
    com.akaxin.proto.core.CoreProto.ErrorInfo getErr();
    /**
     * <pre>
     *错误信息，如果err不为null，data很有可能是无用的。
     * </pre>
     *
     * <code>.core.ErrorInfo err = 1;</code>
     */
    com.akaxin.proto.core.CoreProto.ErrorInfoOrBuilder getErrOrBuilder();

    /**
     * <pre>
     *业务Data，由业务逻辑自己解析
     * </pre>
     *
     * <code>bytes data = 2;</code>
     */
    com.google.protobuf.ByteString getData();

    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */
    int getHeaderCount();
    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */
    boolean containsHeader(
        int key);
    /**
     * Use {@link #getHeaderMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.String>
    getHeader();
    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */
    java.util.Map<java.lang.Integer, java.lang.String>
    getHeaderMap();
    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */

    java.lang.String getHeaderOrDefault(
        int key,
        java.lang.String defaultValue);
    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */

    java.lang.String getHeaderOrThrow(
        int key);
  }
  /**
   * <pre>
   * 数据包中的数据部分
   * </pre>
   *
   * Protobuf type {@code core.TransportPackageData}
   */
  public  static final class TransportPackageData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.TransportPackageData)
      TransportPackageDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TransportPackageData.newBuilder() to construct.
    private TransportPackageData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransportPackageData() {
      data_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TransportPackageData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.akaxin.proto.core.CoreProto.ErrorInfo.Builder subBuilder = null;
              if (err_ != null) {
                subBuilder = err_.toBuilder();
              }
              err_ = input.readMessage(com.akaxin.proto.core.CoreProto.ErrorInfo.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(err_);
                err_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {

              data_ = input.readBytes();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                header_ = com.google.protobuf.MapField.newMapField(
                    HeaderDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000004;
              }
              com.google.protobuf.MapEntry<java.lang.Integer, java.lang.String>
              header__ = input.readMessage(
                  HeaderDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              header_.getMutableMap().put(
                  header__.getKey(), header__.getValue());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_TransportPackageData_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 3:
          return internalGetHeader();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_TransportPackageData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.TransportPackageData.class, com.akaxin.proto.core.CoreProto.TransportPackageData.Builder.class);
    }

    private int bitField0_;
    public static final int ERR_FIELD_NUMBER = 1;
    private com.akaxin.proto.core.CoreProto.ErrorInfo err_;
    /**
     * <pre>
     *错误信息，如果err不为null，data很有可能是无用的。
     * </pre>
     *
     * <code>.core.ErrorInfo err = 1;</code>
     */
    public boolean hasErr() {
      return err_ != null;
    }
    /**
     * <pre>
     *错误信息，如果err不为null，data很有可能是无用的。
     * </pre>
     *
     * <code>.core.ErrorInfo err = 1;</code>
     */
    public com.akaxin.proto.core.CoreProto.ErrorInfo getErr() {
      return err_ == null ? com.akaxin.proto.core.CoreProto.ErrorInfo.getDefaultInstance() : err_;
    }
    /**
     * <pre>
     *错误信息，如果err不为null，data很有可能是无用的。
     * </pre>
     *
     * <code>.core.ErrorInfo err = 1;</code>
     */
    public com.akaxin.proto.core.CoreProto.ErrorInfoOrBuilder getErrOrBuilder() {
      return getErr();
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString data_;
    /**
     * <pre>
     *业务Data，由业务逻辑自己解析
     * </pre>
     *
     * <code>bytes data = 2;</code>
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

    public static final int HEADER_FIELD_NUMBER = 3;
    private static final class HeaderDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.Integer, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.Integer, java.lang.String>newDefaultInstance(
                  com.akaxin.proto.core.CoreProto.internal_static_core_TransportPackageData_HeaderEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.INT32,
                  0,
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.Integer, java.lang.String> header_;
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.String>
    internalGetHeader() {
      if (header_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            HeaderDefaultEntryHolder.defaultEntry);
      }
      return header_;
    }

    public int getHeaderCount() {
      return internalGetHeader().getMap().size();
    }
    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */

    public boolean containsHeader(
        int key) {
      
      return internalGetHeader().getMap().containsKey(key);
    }
    /**
     * Use {@link #getHeaderMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.String> getHeader() {
      return getHeaderMap();
    }
    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */

    public java.util.Map<java.lang.Integer, java.lang.String> getHeaderMap() {
      return internalGetHeader().getMap();
    }
    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */

    public java.lang.String getHeaderOrDefault(
        int key,
        java.lang.String defaultValue) {
      
      java.util.Map<java.lang.Integer, java.lang.String> map =
          internalGetHeader().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     *非业务逻辑的必要数据
     * 分为两个级别：Socket级 与 Request级
     * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
     * Request级：在每一次请求中都可能会变化并传递。
     * </pre>
     *
     * <code>map&lt;int32, string&gt; header = 3;</code>
     */

    public java.lang.String getHeaderOrThrow(
        int key) {
      
      java.util.Map<java.lang.Integer, java.lang.String> map =
          internalGetHeader().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (err_ != null) {
        output.writeMessage(1, getErr());
      }
      if (!data_.isEmpty()) {
        output.writeBytes(2, data_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeIntegerMapTo(
          output,
          internalGetHeader(),
          HeaderDefaultEntryHolder.defaultEntry,
          3);
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (err_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getErr());
      }
      if (!data_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, data_);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.String> entry
           : internalGetHeader().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.String>
        header__ = HeaderDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, header__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.TransportPackageData)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.TransportPackageData other = (com.akaxin.proto.core.CoreProto.TransportPackageData) obj;

      boolean result = true;
      result = result && (hasErr() == other.hasErr());
      if (hasErr()) {
        result = result && getErr()
            .equals(other.getErr());
      }
      result = result && getData()
          .equals(other.getData());
      result = result && internalGetHeader().equals(
          other.internalGetHeader());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasErr()) {
        hash = (37 * hash) + ERR_FIELD_NUMBER;
        hash = (53 * hash) + getErr().hashCode();
      }
      hash = (37 * hash) + DATA_FIELD_NUMBER;
      hash = (53 * hash) + getData().hashCode();
      if (!internalGetHeader().getMap().isEmpty()) {
        hash = (37 * hash) + HEADER_FIELD_NUMBER;
        hash = (53 * hash) + internalGetHeader().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.TransportPackageData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.TransportPackageData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * 数据包中的数据部分
     * </pre>
     *
     * Protobuf type {@code core.TransportPackageData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.TransportPackageData)
        com.akaxin.proto.core.CoreProto.TransportPackageDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_TransportPackageData_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 3:
            return internalGetHeader();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 3:
            return internalGetMutableHeader();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_TransportPackageData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.TransportPackageData.class, com.akaxin.proto.core.CoreProto.TransportPackageData.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.TransportPackageData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (errBuilder_ == null) {
          err_ = null;
        } else {
          err_ = null;
          errBuilder_ = null;
        }
        data_ = com.google.protobuf.ByteString.EMPTY;

        internalGetMutableHeader().clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_TransportPackageData_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.TransportPackageData getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.TransportPackageData.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.TransportPackageData build() {
        com.akaxin.proto.core.CoreProto.TransportPackageData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.TransportPackageData buildPartial() {
        com.akaxin.proto.core.CoreProto.TransportPackageData result = new com.akaxin.proto.core.CoreProto.TransportPackageData(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (errBuilder_ == null) {
          result.err_ = err_;
        } else {
          result.err_ = errBuilder_.build();
        }
        result.data_ = data_;
        result.header_ = internalGetHeader();
        result.header_.makeImmutable();
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.TransportPackageData) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.TransportPackageData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.TransportPackageData other) {
        if (other == com.akaxin.proto.core.CoreProto.TransportPackageData.getDefaultInstance()) return this;
        if (other.hasErr()) {
          mergeErr(other.getErr());
        }
        if (other.getData() != com.google.protobuf.ByteString.EMPTY) {
          setData(other.getData());
        }
        internalGetMutableHeader().mergeFrom(
            other.internalGetHeader());
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.TransportPackageData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.TransportPackageData) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.akaxin.proto.core.CoreProto.ErrorInfo err_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.akaxin.proto.core.CoreProto.ErrorInfo, com.akaxin.proto.core.CoreProto.ErrorInfo.Builder, com.akaxin.proto.core.CoreProto.ErrorInfoOrBuilder> errBuilder_;
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      public boolean hasErr() {
        return errBuilder_ != null || err_ != null;
      }
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      public com.akaxin.proto.core.CoreProto.ErrorInfo getErr() {
        if (errBuilder_ == null) {
          return err_ == null ? com.akaxin.proto.core.CoreProto.ErrorInfo.getDefaultInstance() : err_;
        } else {
          return errBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      public Builder setErr(com.akaxin.proto.core.CoreProto.ErrorInfo value) {
        if (errBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          err_ = value;
          onChanged();
        } else {
          errBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      public Builder setErr(
          com.akaxin.proto.core.CoreProto.ErrorInfo.Builder builderForValue) {
        if (errBuilder_ == null) {
          err_ = builderForValue.build();
          onChanged();
        } else {
          errBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      public Builder mergeErr(com.akaxin.proto.core.CoreProto.ErrorInfo value) {
        if (errBuilder_ == null) {
          if (err_ != null) {
            err_ =
              com.akaxin.proto.core.CoreProto.ErrorInfo.newBuilder(err_).mergeFrom(value).buildPartial();
          } else {
            err_ = value;
          }
          onChanged();
        } else {
          errBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      public Builder clearErr() {
        if (errBuilder_ == null) {
          err_ = null;
          onChanged();
        } else {
          err_ = null;
          errBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      public com.akaxin.proto.core.CoreProto.ErrorInfo.Builder getErrBuilder() {
        
        onChanged();
        return getErrFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      public com.akaxin.proto.core.CoreProto.ErrorInfoOrBuilder getErrOrBuilder() {
        if (errBuilder_ != null) {
          return errBuilder_.getMessageOrBuilder();
        } else {
          return err_ == null ?
              com.akaxin.proto.core.CoreProto.ErrorInfo.getDefaultInstance() : err_;
        }
      }
      /**
       * <pre>
       *错误信息，如果err不为null，data很有可能是无用的。
       * </pre>
       *
       * <code>.core.ErrorInfo err = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.akaxin.proto.core.CoreProto.ErrorInfo, com.akaxin.proto.core.CoreProto.ErrorInfo.Builder, com.akaxin.proto.core.CoreProto.ErrorInfoOrBuilder> 
          getErrFieldBuilder() {
        if (errBuilder_ == null) {
          errBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.akaxin.proto.core.CoreProto.ErrorInfo, com.akaxin.proto.core.CoreProto.ErrorInfo.Builder, com.akaxin.proto.core.CoreProto.ErrorInfoOrBuilder>(
                  getErr(),
                  getParentForChildren(),
                  isClean());
          err_ = null;
        }
        return errBuilder_;
      }

      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *业务Data，由业务逻辑自己解析
       * </pre>
       *
       * <code>bytes data = 2;</code>
       */
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <pre>
       *业务Data，由业务逻辑自己解析
       * </pre>
       *
       * <code>bytes data = 2;</code>
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *业务Data，由业务逻辑自己解析
       * </pre>
       *
       * <code>bytes data = 2;</code>
       */
      public Builder clearData() {
        
        data_ = getDefaultInstance().getData();
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.Integer, java.lang.String> header_;
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.String>
      internalGetHeader() {
        if (header_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              HeaderDefaultEntryHolder.defaultEntry);
        }
        return header_;
      }
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.String>
      internalGetMutableHeader() {
        onChanged();;
        if (header_ == null) {
          header_ = com.google.protobuf.MapField.newMapField(
              HeaderDefaultEntryHolder.defaultEntry);
        }
        if (!header_.isMutable()) {
          header_ = header_.copy();
        }
        return header_;
      }

      public int getHeaderCount() {
        return internalGetHeader().getMap().size();
      }
      /**
       * <pre>
       *非业务逻辑的必要数据
       * 分为两个级别：Socket级 与 Request级
       * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
       * Request级：在每一次请求中都可能会变化并传递。
       * </pre>
       *
       * <code>map&lt;int32, string&gt; header = 3;</code>
       */

      public boolean containsHeader(
          int key) {
        
        return internalGetHeader().getMap().containsKey(key);
      }
      /**
       * Use {@link #getHeaderMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.String> getHeader() {
        return getHeaderMap();
      }
      /**
       * <pre>
       *非业务逻辑的必要数据
       * 分为两个级别：Socket级 与 Request级
       * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
       * Request级：在每一次请求中都可能会变化并传递。
       * </pre>
       *
       * <code>map&lt;int32, string&gt; header = 3;</code>
       */

      public java.util.Map<java.lang.Integer, java.lang.String> getHeaderMap() {
        return internalGetHeader().getMap();
      }
      /**
       * <pre>
       *非业务逻辑的必要数据
       * 分为两个级别：Socket级 与 Request级
       * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
       * Request级：在每一次请求中都可能会变化并传递。
       * </pre>
       *
       * <code>map&lt;int32, string&gt; header = 3;</code>
       */

      public java.lang.String getHeaderOrDefault(
          int key,
          java.lang.String defaultValue) {
        
        java.util.Map<java.lang.Integer, java.lang.String> map =
            internalGetHeader().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       *非业务逻辑的必要数据
       * 分为两个级别：Socket级 与 Request级
       * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
       * Request级：在每一次请求中都可能会变化并传递。
       * </pre>
       *
       * <code>map&lt;int32, string&gt; header = 3;</code>
       */

      public java.lang.String getHeaderOrThrow(
          int key) {
        
        java.util.Map<java.lang.Integer, java.lang.String> map =
            internalGetHeader().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearHeader() {
        internalGetMutableHeader().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       *非业务逻辑的必要数据
       * 分为两个级别：Socket级 与 Request级
       * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
       * Request级：在每一次请求中都可能会变化并传递。
       * </pre>
       *
       * <code>map&lt;int32, string&gt; header = 3;</code>
       */

      public Builder removeHeader(
          int key) {
        
        internalGetMutableHeader().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.String>
      getMutableHeader() {
        return internalGetMutableHeader().getMutableMap();
      }
      /**
       * <pre>
       *非业务逻辑的必要数据
       * 分为两个级别：Socket级 与 Request级
       * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
       * Request级：在每一次请求中都可能会变化并传递。
       * </pre>
       *
       * <code>map&lt;int32, string&gt; header = 3;</code>
       */
      public Builder putHeader(
          int key,
          java.lang.String value) {
        
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableHeader().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       *非业务逻辑的必要数据
       * 分为两个级别：Socket级 与 Request级
       * Socket级：只在链接建立后的第一个请求中传递，在链接的整个生命周期都有效。
       * Request级：在每一次请求中都可能会变化并传递。
       * </pre>
       *
       * <code>map&lt;int32, string&gt; header = 3;</code>
       */

      public Builder putAllHeader(
          java.util.Map<java.lang.Integer, java.lang.String> values) {
        internalGetMutableHeader().getMutableMap()
            .putAll(values);
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.TransportPackageData)
    }

    // @@protoc_insertion_point(class_scope:core.TransportPackageData)
    private static final com.akaxin.proto.core.CoreProto.TransportPackageData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.TransportPackageData();
    }

    public static com.akaxin.proto.core.CoreProto.TransportPackageData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TransportPackageData>
        PARSER = new com.google.protobuf.AbstractParser<TransportPackageData>() {
      public TransportPackageData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new TransportPackageData(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<TransportPackageData> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TransportPackageData> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.TransportPackageData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MsgStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.MsgStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>int32 msg_status = 2;</code>
     */
    int getMsgStatus();

    /**
     * <pre>
     * msg_server_time 等于此条消息在服务器数据库的值
     * 如果是发送成功的状态，此值有效。
     * 为什么不使用服务器下发这条请求时的即时时间？
     * 这样的话，可以脱离状态，随意的重发来保证成功。
     * &#64;since v2
     * &#64;todo 补充v2之前版本对此字段的处理逻辑（默认使用msg_time_send的值）
     * </pre>
     *
     * <code>int64 msg_server_time = 3;</code>
     */
    long getMsgServerTime();

    /**
     * <pre>
     * &#64;since v6
     * </pre>
     *
     * <code>int32 msg_pointer = 4;</code>
     */
    int getMsgPointer();
  }
  /**
   * <pre>
   **
   * msg_status:1 发送成功
   * msg_status:0 默认状态
   * msg_status:-1 用户非好友关系，二人消息发送失败
   * msg_status:-2 用户非群成员，群消息发送失败
   * </pre>
   *
   * Protobuf type {@code core.MsgStatus}
   */
  public  static final class MsgStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.MsgStatus)
      MsgStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MsgStatus.newBuilder() to construct.
    private MsgStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MsgStatus() {
      msgId_ = "";
      msgStatus_ = 0;
      msgServerTime_ = 0L;
      msgPointer_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MsgStatus(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 16: {

              msgStatus_ = input.readInt32();
              break;
            }
            case 24: {

              msgServerTime_ = input.readInt64();
              break;
            }
            case 32: {

              msgPointer_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgStatus_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.MsgStatus.class, com.akaxin.proto.core.CoreProto.MsgStatus.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MSG_STATUS_FIELD_NUMBER = 2;
    private int msgStatus_;
    /**
     * <code>int32 msg_status = 2;</code>
     */
    public int getMsgStatus() {
      return msgStatus_;
    }

    public static final int MSG_SERVER_TIME_FIELD_NUMBER = 3;
    private long msgServerTime_;
    /**
     * <pre>
     * msg_server_time 等于此条消息在服务器数据库的值
     * 如果是发送成功的状态，此值有效。
     * 为什么不使用服务器下发这条请求时的即时时间？
     * 这样的话，可以脱离状态，随意的重发来保证成功。
     * &#64;since v2
     * &#64;todo 补充v2之前版本对此字段的处理逻辑（默认使用msg_time_send的值）
     * </pre>
     *
     * <code>int64 msg_server_time = 3;</code>
     */
    public long getMsgServerTime() {
      return msgServerTime_;
    }

    public static final int MSG_POINTER_FIELD_NUMBER = 4;
    private int msgPointer_;
    /**
     * <pre>
     * &#64;since v6
     * </pre>
     *
     * <code>int32 msg_pointer = 4;</code>
     */
    public int getMsgPointer() {
      return msgPointer_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (msgStatus_ != 0) {
        output.writeInt32(2, msgStatus_);
      }
      if (msgServerTime_ != 0L) {
        output.writeInt64(3, msgServerTime_);
      }
      if (msgPointer_ != 0) {
        output.writeInt32(4, msgPointer_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (msgStatus_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, msgStatus_);
      }
      if (msgServerTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, msgServerTime_);
      }
      if (msgPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, msgPointer_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.MsgStatus)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.MsgStatus other = (com.akaxin.proto.core.CoreProto.MsgStatus) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && (getMsgStatus()
          == other.getMsgStatus());
      result = result && (getMsgServerTime()
          == other.getMsgServerTime());
      result = result && (getMsgPointer()
          == other.getMsgPointer());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + MSG_STATUS_FIELD_NUMBER;
      hash = (53 * hash) + getMsgStatus();
      hash = (37 * hash) + MSG_SERVER_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMsgServerTime());
      hash = (37 * hash) + MSG_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getMsgPointer();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.MsgStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     **
     * msg_status:1 发送成功
     * msg_status:0 默认状态
     * msg_status:-1 用户非好友关系，二人消息发送失败
     * msg_status:-2 用户非群成员，群消息发送失败
     * </pre>
     *
     * Protobuf type {@code core.MsgStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.MsgStatus)
        com.akaxin.proto.core.CoreProto.MsgStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgStatus_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.MsgStatus.class, com.akaxin.proto.core.CoreProto.MsgStatus.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.MsgStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        msgStatus_ = 0;

        msgServerTime_ = 0L;

        msgPointer_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgStatus_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.MsgStatus getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.MsgStatus.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.MsgStatus build() {
        com.akaxin.proto.core.CoreProto.MsgStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.MsgStatus buildPartial() {
        com.akaxin.proto.core.CoreProto.MsgStatus result = new com.akaxin.proto.core.CoreProto.MsgStatus(this);
        result.msgId_ = msgId_;
        result.msgStatus_ = msgStatus_;
        result.msgServerTime_ = msgServerTime_;
        result.msgPointer_ = msgPointer_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.MsgStatus) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.MsgStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.MsgStatus other) {
        if (other == com.akaxin.proto.core.CoreProto.MsgStatus.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (other.getMsgStatus() != 0) {
          setMsgStatus(other.getMsgStatus());
        }
        if (other.getMsgServerTime() != 0L) {
          setMsgServerTime(other.getMsgServerTime());
        }
        if (other.getMsgPointer() != 0) {
          setMsgPointer(other.getMsgPointer());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.MsgStatus parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.MsgStatus) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private int msgStatus_ ;
      /**
       * <code>int32 msg_status = 2;</code>
       */
      public int getMsgStatus() {
        return msgStatus_;
      }
      /**
       * <code>int32 msg_status = 2;</code>
       */
      public Builder setMsgStatus(int value) {
        
        msgStatus_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 msg_status = 2;</code>
       */
      public Builder clearMsgStatus() {
        
        msgStatus_ = 0;
        onChanged();
        return this;
      }

      private long msgServerTime_ ;
      /**
       * <pre>
       * msg_server_time 等于此条消息在服务器数据库的值
       * 如果是发送成功的状态，此值有效。
       * 为什么不使用服务器下发这条请求时的即时时间？
       * 这样的话，可以脱离状态，随意的重发来保证成功。
       * &#64;since v2
       * &#64;todo 补充v2之前版本对此字段的处理逻辑（默认使用msg_time_send的值）
       * </pre>
       *
       * <code>int64 msg_server_time = 3;</code>
       */
      public long getMsgServerTime() {
        return msgServerTime_;
      }
      /**
       * <pre>
       * msg_server_time 等于此条消息在服务器数据库的值
       * 如果是发送成功的状态，此值有效。
       * 为什么不使用服务器下发这条请求时的即时时间？
       * 这样的话，可以脱离状态，随意的重发来保证成功。
       * &#64;since v2
       * &#64;todo 补充v2之前版本对此字段的处理逻辑（默认使用msg_time_send的值）
       * </pre>
       *
       * <code>int64 msg_server_time = 3;</code>
       */
      public Builder setMsgServerTime(long value) {
        
        msgServerTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * msg_server_time 等于此条消息在服务器数据库的值
       * 如果是发送成功的状态，此值有效。
       * 为什么不使用服务器下发这条请求时的即时时间？
       * 这样的话，可以脱离状态，随意的重发来保证成功。
       * &#64;since v2
       * &#64;todo 补充v2之前版本对此字段的处理逻辑（默认使用msg_time_send的值）
       * </pre>
       *
       * <code>int64 msg_server_time = 3;</code>
       */
      public Builder clearMsgServerTime() {
        
        msgServerTime_ = 0L;
        onChanged();
        return this;
      }

      private int msgPointer_ ;
      /**
       * <pre>
       * &#64;since v6
       * </pre>
       *
       * <code>int32 msg_pointer = 4;</code>
       */
      public int getMsgPointer() {
        return msgPointer_;
      }
      /**
       * <pre>
       * &#64;since v6
       * </pre>
       *
       * <code>int32 msg_pointer = 4;</code>
       */
      public Builder setMsgPointer(int value) {
        
        msgPointer_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * &#64;since v6
       * </pre>
       *
       * <code>int32 msg_pointer = 4;</code>
       */
      public Builder clearMsgPointer() {
        
        msgPointer_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.MsgStatus)
    }

    // @@protoc_insertion_point(class_scope:core.MsgStatus)
    private static final com.akaxin.proto.core.CoreProto.MsgStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.MsgStatus();
    }

    public static com.akaxin.proto.core.CoreProto.MsgStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MsgStatus>
        PARSER = new com.google.protobuf.AbstractParser<MsgStatus>() {
      public MsgStatus parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new MsgStatus(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<MsgStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MsgStatus> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.MsgStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MsgTextOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.MsgText)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <code>bytes text = 4;</code>
     */
    com.google.protobuf.ByteString getText();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *普通文本消息
   * </pre>
   *
   * Protobuf type {@code core.MsgText}
   */
  public  static final class MsgText extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.MsgText)
      MsgTextOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MsgText.newBuilder() to construct.
    private MsgText(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MsgText() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      text_ = com.google.protobuf.ByteString.EMPTY;
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MsgText(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {

              text_ = input.readBytes();
              break;
            }
            case 40: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgText_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgText_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.MsgText.class, com.akaxin.proto.core.CoreProto.MsgText.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEXT_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString text_;
    /**
     * <code>bytes text = 4;</code>
     */
    public com.google.protobuf.ByteString getText() {
      return text_;
    }

    public static final int TIME_FIELD_NUMBER = 5;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!text_.isEmpty()) {
        output.writeBytes(4, text_);
      }
      if (time_ != 0L) {
        output.writeInt64(5, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!text_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, text_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.MsgText)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.MsgText other = (com.akaxin.proto.core.CoreProto.MsgText) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getText()
          .equals(other.getText());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgText parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.MsgText prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *普通文本消息
     * </pre>
     *
     * Protobuf type {@code core.MsgText}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.MsgText)
        com.akaxin.proto.core.CoreProto.MsgTextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgText_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgText_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.MsgText.class, com.akaxin.proto.core.CoreProto.MsgText.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.MsgText.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        text_ = com.google.protobuf.ByteString.EMPTY;

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgText_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.MsgText getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.MsgText.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.MsgText build() {
        com.akaxin.proto.core.CoreProto.MsgText result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.MsgText buildPartial() {
        com.akaxin.proto.core.CoreProto.MsgText result = new com.akaxin.proto.core.CoreProto.MsgText(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.text_ = text_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.MsgText) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.MsgText)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.MsgText other) {
        if (other == com.akaxin.proto.core.CoreProto.MsgText.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (other.getText() != com.google.protobuf.ByteString.EMPTY) {
          setText(other.getText());
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.MsgText parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.MsgText) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString text_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes text = 4;</code>
       */
      public com.google.protobuf.ByteString getText() {
        return text_;
      }
      /**
       * <code>bytes text = 4;</code>
       */
      public Builder setText(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes text = 4;</code>
       */
      public Builder clearText() {
        
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.MsgText)
    }

    // @@protoc_insertion_point(class_scope:core.MsgText)
    private static final com.akaxin.proto.core.CoreProto.MsgText DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.MsgText();
    }

    public static com.akaxin.proto.core.CoreProto.MsgText getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MsgText>
        PARSER = new com.google.protobuf.AbstractParser<MsgText>() {
      public MsgText parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new MsgText(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<MsgText> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MsgText> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.MsgText getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MsgSecretTextOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.MsgSecretText)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <code>bytes text = 4;</code>
     */
    com.google.protobuf.ByteString getText();

    /**
     * <pre>
     *加密key,base64
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    java.lang.String getBase64TsKey();
    /**
     * <pre>
     *加密key,base64
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    com.google.protobuf.ByteString
        getBase64TsKeyBytes();

    /**
     * <code>string to_device_id = 6;</code>
     */
    java.lang.String getToDeviceId();
    /**
     * <code>string to_device_id = 6;</code>
     */
    com.google.protobuf.ByteString
        getToDeviceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *加密文本消息
   * </pre>
   *
   * Protobuf type {@code core.MsgSecretText}
   */
  public  static final class MsgSecretText extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.MsgSecretText)
      MsgSecretTextOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MsgSecretText.newBuilder() to construct.
    private MsgSecretText(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MsgSecretText() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      text_ = com.google.protobuf.ByteString.EMPTY;
      base64TsKey_ = "";
      toDeviceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MsgSecretText(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {

              text_ = input.readBytes();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              base64TsKey_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              toDeviceId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretText_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretText_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.MsgSecretText.class, com.akaxin.proto.core.CoreProto.MsgSecretText.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEXT_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString text_;
    /**
     * <code>bytes text = 4;</code>
     */
    public com.google.protobuf.ByteString getText() {
      return text_;
    }

    public static final int BASE64_TS_KEY_FIELD_NUMBER = 5;
    private volatile java.lang.Object base64TsKey_;
    /**
     * <pre>
     *加密key,base64
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public java.lang.String getBase64TsKey() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64TsKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密key,base64
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public com.google.protobuf.ByteString
        getBase64TsKeyBytes() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64TsKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_DEVICE_ID_FIELD_NUMBER = 6;
    private volatile java.lang.Object toDeviceId_;
    /**
     * <code>string to_device_id = 6;</code>
     */
    public java.lang.String getToDeviceId() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        toDeviceId_ = s;
        return s;
      }
    }
    /**
     * <code>string to_device_id = 6;</code>
     */
    public com.google.protobuf.ByteString
        getToDeviceIdBytes() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toDeviceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!text_.isEmpty()) {
        output.writeBytes(4, text_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, toDeviceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!text_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, text_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, toDeviceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.MsgSecretText)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.MsgSecretText other = (com.akaxin.proto.core.CoreProto.MsgSecretText) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getText()
          .equals(other.getText());
      result = result && getBase64TsKey()
          .equals(other.getBase64TsKey());
      result = result && getToDeviceId()
          .equals(other.getToDeviceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
      hash = (37 * hash) + BASE64_TS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getBase64TsKey().hashCode();
      hash = (37 * hash) + TO_DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getToDeviceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretText parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.MsgSecretText prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *加密文本消息
     * </pre>
     *
     * Protobuf type {@code core.MsgSecretText}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.MsgSecretText)
        com.akaxin.proto.core.CoreProto.MsgSecretTextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretText_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretText_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.MsgSecretText.class, com.akaxin.proto.core.CoreProto.MsgSecretText.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.MsgSecretText.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        text_ = com.google.protobuf.ByteString.EMPTY;

        base64TsKey_ = "";

        toDeviceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretText_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretText getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.MsgSecretText.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretText build() {
        com.akaxin.proto.core.CoreProto.MsgSecretText result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretText buildPartial() {
        com.akaxin.proto.core.CoreProto.MsgSecretText result = new com.akaxin.proto.core.CoreProto.MsgSecretText(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.text_ = text_;
        result.base64TsKey_ = base64TsKey_;
        result.toDeviceId_ = toDeviceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.MsgSecretText) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.MsgSecretText)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.MsgSecretText other) {
        if (other == com.akaxin.proto.core.CoreProto.MsgSecretText.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (other.getText() != com.google.protobuf.ByteString.EMPTY) {
          setText(other.getText());
        }
        if (!other.getBase64TsKey().isEmpty()) {
          base64TsKey_ = other.base64TsKey_;
          onChanged();
        }
        if (!other.getToDeviceId().isEmpty()) {
          toDeviceId_ = other.toDeviceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.MsgSecretText parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.MsgSecretText) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString text_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes text = 4;</code>
       */
      public com.google.protobuf.ByteString getText() {
        return text_;
      }
      /**
       * <code>bytes text = 4;</code>
       */
      public Builder setText(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes text = 4;</code>
       */
      public Builder clearText() {
        
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }

      private java.lang.Object base64TsKey_ = "";
      /**
       * <pre>
       *加密key,base64
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public java.lang.String getBase64TsKey() {
        java.lang.Object ref = base64TsKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64TsKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密key,base64
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public com.google.protobuf.ByteString
          getBase64TsKeyBytes() {
        java.lang.Object ref = base64TsKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64TsKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密key,base64
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64TsKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key,base64
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder clearBase64TsKey() {
        
        base64TsKey_ = getDefaultInstance().getBase64TsKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key,base64
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64TsKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object toDeviceId_ = "";
      /**
       * <code>string to_device_id = 6;</code>
       */
      public java.lang.String getToDeviceId() {
        java.lang.Object ref = toDeviceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toDeviceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public com.google.protobuf.ByteString
          getToDeviceIdBytes() {
        java.lang.Object ref = toDeviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toDeviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        toDeviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder clearToDeviceId() {
        
        toDeviceId_ = getDefaultInstance().getToDeviceId();
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        toDeviceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.MsgSecretText)
    }

    // @@protoc_insertion_point(class_scope:core.MsgSecretText)
    private static final com.akaxin.proto.core.CoreProto.MsgSecretText DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.MsgSecretText();
    }

    public static com.akaxin.proto.core.CoreProto.MsgSecretText getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MsgSecretText>
        PARSER = new com.google.protobuf.AbstractParser<MsgSecretText>() {
      public MsgSecretText parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new MsgSecretText(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<MsgSecretText> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MsgSecretText> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.MsgSecretText getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupTextOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupText)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <code>bytes text = 4;</code>
     */
    com.google.protobuf.ByteString getText();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    long getTime();

    /**
     * <pre>
     *&#64;who 群消息可以&#64;他人
     * </pre>
     *
     * <code>string at_site_user_id = 6;</code>
     */
    java.lang.String getAtSiteUserId();
    /**
     * <pre>
     *&#64;who 群消息可以&#64;他人
     * </pre>
     *
     * <code>string at_site_user_id = 6;</code>
     */
    com.google.protobuf.ByteString
        getAtSiteUserIdBytes();
  }
  /**
   * <pre>
   *普通文本消息
   * </pre>
   *
   * Protobuf type {@code core.GroupText}
   */
  public  static final class GroupText extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupText)
      GroupTextOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupText.newBuilder() to construct.
    private GroupText(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupText() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      text_ = com.google.protobuf.ByteString.EMPTY;
      time_ = 0L;
      atSiteUserId_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupText(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {

              text_ = input.readBytes();
              break;
            }
            case 40: {

              time_ = input.readInt64();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              atSiteUserId_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupText_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupText_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupText.class, com.akaxin.proto.core.CoreProto.GroupText.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEXT_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString text_;
    /**
     * <code>bytes text = 4;</code>
     */
    public com.google.protobuf.ByteString getText() {
      return text_;
    }

    public static final int TIME_FIELD_NUMBER = 5;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    public long getTime() {
      return time_;
    }

    public static final int AT_SITE_USER_ID_FIELD_NUMBER = 6;
    private volatile java.lang.Object atSiteUserId_;
    /**
     * <pre>
     *&#64;who 群消息可以&#64;他人
     * </pre>
     *
     * <code>string at_site_user_id = 6;</code>
     */
    public java.lang.String getAtSiteUserId() {
      java.lang.Object ref = atSiteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        atSiteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;who 群消息可以&#64;他人
     * </pre>
     *
     * <code>string at_site_user_id = 6;</code>
     */
    public com.google.protobuf.ByteString
        getAtSiteUserIdBytes() {
      java.lang.Object ref = atSiteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        atSiteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!text_.isEmpty()) {
        output.writeBytes(4, text_);
      }
      if (time_ != 0L) {
        output.writeInt64(5, time_);
      }
      if (!getAtSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, atSiteUserId_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!text_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, text_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, time_);
      }
      if (!getAtSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, atSiteUserId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupText)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupText other = (com.akaxin.proto.core.CoreProto.GroupText) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getText()
          .equals(other.getText());
      result = result && (getTime()
          == other.getTime());
      result = result && getAtSiteUserId()
          .equals(other.getAtSiteUserId());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (37 * hash) + AT_SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getAtSiteUserId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupText parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupText prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *普通文本消息
     * </pre>
     *
     * Protobuf type {@code core.GroupText}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupText)
        com.akaxin.proto.core.CoreProto.GroupTextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupText_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupText_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupText.class, com.akaxin.proto.core.CoreProto.GroupText.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupText.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        text_ = com.google.protobuf.ByteString.EMPTY;

        time_ = 0L;

        atSiteUserId_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupText_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupText getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupText.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupText build() {
        com.akaxin.proto.core.CoreProto.GroupText result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupText buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupText result = new com.akaxin.proto.core.CoreProto.GroupText(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.text_ = text_;
        result.time_ = time_;
        result.atSiteUserId_ = atSiteUserId_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupText) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupText)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupText other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupText.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (other.getText() != com.google.protobuf.ByteString.EMPTY) {
          setText(other.getText());
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        if (!other.getAtSiteUserId().isEmpty()) {
          atSiteUserId_ = other.atSiteUserId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupText parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupText) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString text_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes text = 4;</code>
       */
      public com.google.protobuf.ByteString getText() {
        return text_;
      }
      /**
       * <code>bytes text = 4;</code>
       */
      public Builder setText(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes text = 4;</code>
       */
      public Builder clearText() {
        
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object atSiteUserId_ = "";
      /**
       * <pre>
       *&#64;who 群消息可以&#64;他人
       * </pre>
       *
       * <code>string at_site_user_id = 6;</code>
       */
      public java.lang.String getAtSiteUserId() {
        java.lang.Object ref = atSiteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          atSiteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *&#64;who 群消息可以&#64;他人
       * </pre>
       *
       * <code>string at_site_user_id = 6;</code>
       */
      public com.google.protobuf.ByteString
          getAtSiteUserIdBytes() {
        java.lang.Object ref = atSiteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          atSiteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;who 群消息可以&#64;他人
       * </pre>
       *
       * <code>string at_site_user_id = 6;</code>
       */
      public Builder setAtSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        atSiteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;who 群消息可以&#64;他人
       * </pre>
       *
       * <code>string at_site_user_id = 6;</code>
       */
      public Builder clearAtSiteUserId() {
        
        atSiteUserId_ = getDefaultInstance().getAtSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;who 群消息可以&#64;他人
       * </pre>
       *
       * <code>string at_site_user_id = 6;</code>
       */
      public Builder setAtSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        atSiteUserId_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupText)
    }

    // @@protoc_insertion_point(class_scope:core.GroupText)
    private static final com.akaxin.proto.core.CoreProto.GroupText DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupText();
    }

    public static com.akaxin.proto.core.CoreProto.GroupText getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupText>
        PARSER = new com.google.protobuf.AbstractParser<GroupText>() {
      public GroupText parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupText(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupText> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupText> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupText getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupSecretTextOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupSecretText)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <code>bytes text = 4;</code>
     */
    com.google.protobuf.ByteString getText();

    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    java.lang.String getBase64TsKey();
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    com.google.protobuf.ByteString
        getBase64TsKeyBytes();

    /**
     * <code>string to_device_id = 6;</code>
     */
    java.lang.String getToDeviceId();
    /**
     * <code>string to_device_id = 6;</code>
     */
    com.google.protobuf.ByteString
        getToDeviceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *加密文本消息
   * </pre>
   *
   * Protobuf type {@code core.GroupSecretText}
   */
  public  static final class GroupSecretText extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupSecretText)
      GroupSecretTextOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupSecretText.newBuilder() to construct.
    private GroupSecretText(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupSecretText() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      text_ = com.google.protobuf.ByteString.EMPTY;
      base64TsKey_ = "";
      toDeviceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupSecretText(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {

              text_ = input.readBytes();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              base64TsKey_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              toDeviceId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretText_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretText_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupSecretText.class, com.akaxin.proto.core.CoreProto.GroupSecretText.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEXT_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString text_;
    /**
     * <code>bytes text = 4;</code>
     */
    public com.google.protobuf.ByteString getText() {
      return text_;
    }

    public static final int BASE64_TS_KEY_FIELD_NUMBER = 5;
    private volatile java.lang.Object base64TsKey_;
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public java.lang.String getBase64TsKey() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64TsKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public com.google.protobuf.ByteString
        getBase64TsKeyBytes() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64TsKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_DEVICE_ID_FIELD_NUMBER = 6;
    private volatile java.lang.Object toDeviceId_;
    /**
     * <code>string to_device_id = 6;</code>
     */
    public java.lang.String getToDeviceId() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        toDeviceId_ = s;
        return s;
      }
    }
    /**
     * <code>string to_device_id = 6;</code>
     */
    public com.google.protobuf.ByteString
        getToDeviceIdBytes() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toDeviceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!text_.isEmpty()) {
        output.writeBytes(4, text_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, toDeviceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!text_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, text_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, toDeviceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupSecretText)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupSecretText other = (com.akaxin.proto.core.CoreProto.GroupSecretText) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getText()
          .equals(other.getText());
      result = result && getBase64TsKey()
          .equals(other.getBase64TsKey());
      result = result && getToDeviceId()
          .equals(other.getToDeviceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
      hash = (37 * hash) + BASE64_TS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getBase64TsKey().hashCode();
      hash = (37 * hash) + TO_DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getToDeviceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretText parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupSecretText prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *加密文本消息
     * </pre>
     *
     * Protobuf type {@code core.GroupSecretText}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupSecretText)
        com.akaxin.proto.core.CoreProto.GroupSecretTextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretText_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretText_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupSecretText.class, com.akaxin.proto.core.CoreProto.GroupSecretText.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupSecretText.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        text_ = com.google.protobuf.ByteString.EMPTY;

        base64TsKey_ = "";

        toDeviceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretText_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretText getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupSecretText.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretText build() {
        com.akaxin.proto.core.CoreProto.GroupSecretText result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretText buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupSecretText result = new com.akaxin.proto.core.CoreProto.GroupSecretText(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.text_ = text_;
        result.base64TsKey_ = base64TsKey_;
        result.toDeviceId_ = toDeviceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupSecretText) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupSecretText)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupSecretText other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupSecretText.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (other.getText() != com.google.protobuf.ByteString.EMPTY) {
          setText(other.getText());
        }
        if (!other.getBase64TsKey().isEmpty()) {
          base64TsKey_ = other.base64TsKey_;
          onChanged();
        }
        if (!other.getToDeviceId().isEmpty()) {
          toDeviceId_ = other.toDeviceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupSecretText parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupSecretText) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString text_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes text = 4;</code>
       */
      public com.google.protobuf.ByteString getText() {
        return text_;
      }
      /**
       * <code>bytes text = 4;</code>
       */
      public Builder setText(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes text = 4;</code>
       */
      public Builder clearText() {
        
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }

      private java.lang.Object base64TsKey_ = "";
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public java.lang.String getBase64TsKey() {
        java.lang.Object ref = base64TsKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64TsKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public com.google.protobuf.ByteString
          getBase64TsKeyBytes() {
        java.lang.Object ref = base64TsKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64TsKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64TsKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder clearBase64TsKey() {
        
        base64TsKey_ = getDefaultInstance().getBase64TsKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64TsKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object toDeviceId_ = "";
      /**
       * <code>string to_device_id = 6;</code>
       */
      public java.lang.String getToDeviceId() {
        java.lang.Object ref = toDeviceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toDeviceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public com.google.protobuf.ByteString
          getToDeviceIdBytes() {
        java.lang.Object ref = toDeviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toDeviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        toDeviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder clearToDeviceId() {
        
        toDeviceId_ = getDefaultInstance().getToDeviceId();
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        toDeviceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupSecretText)
    }

    // @@protoc_insertion_point(class_scope:core.GroupSecretText)
    private static final com.akaxin.proto.core.CoreProto.GroupSecretText DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupSecretText();
    }

    public static com.akaxin.proto.core.CoreProto.GroupSecretText getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupSecretText>
        PARSER = new com.google.protobuf.AbstractParser<GroupSecretText>() {
      public GroupSecretText parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupSecretText(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupSecretText> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupSecretText> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupSecretText getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MsgImageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.MsgImage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <code>string imageId = 4;</code>
     */
    java.lang.String getImageId();
    /**
     * <code>string imageId = 4;</code>
     */
    com.google.protobuf.ByteString
        getImageIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *普通图片消息
   * </pre>
   *
   * Protobuf type {@code core.MsgImage}
   */
  public  static final class MsgImage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.MsgImage)
      MsgImageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MsgImage.newBuilder() to construct.
    private MsgImage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MsgImage() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      imageId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MsgImage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              imageId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgImage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgImage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.MsgImage.class, com.akaxin.proto.core.CoreProto.MsgImage.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IMAGEID_FIELD_NUMBER = 4;
    private volatile java.lang.Object imageId_;
    /**
     * <code>string imageId = 4;</code>
     */
    public java.lang.String getImageId() {
      java.lang.Object ref = imageId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        imageId_ = s;
        return s;
      }
    }
    /**
     * <code>string imageId = 4;</code>
     */
    public com.google.protobuf.ByteString
        getImageIdBytes() {
      java.lang.Object ref = imageId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        imageId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getImageIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, imageId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getImageIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, imageId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.MsgImage)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.MsgImage other = (com.akaxin.proto.core.CoreProto.MsgImage) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getImageId()
          .equals(other.getImageId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + IMAGEID_FIELD_NUMBER;
      hash = (53 * hash) + getImageId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgImage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.MsgImage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *普通图片消息
     * </pre>
     *
     * Protobuf type {@code core.MsgImage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.MsgImage)
        com.akaxin.proto.core.CoreProto.MsgImageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgImage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgImage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.MsgImage.class, com.akaxin.proto.core.CoreProto.MsgImage.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.MsgImage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        imageId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgImage_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.MsgImage getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.MsgImage.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.MsgImage build() {
        com.akaxin.proto.core.CoreProto.MsgImage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.MsgImage buildPartial() {
        com.akaxin.proto.core.CoreProto.MsgImage result = new com.akaxin.proto.core.CoreProto.MsgImage(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.imageId_ = imageId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.MsgImage) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.MsgImage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.MsgImage other) {
        if (other == com.akaxin.proto.core.CoreProto.MsgImage.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getImageId().isEmpty()) {
          imageId_ = other.imageId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.MsgImage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.MsgImage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object imageId_ = "";
      /**
       * <code>string imageId = 4;</code>
       */
      public java.lang.String getImageId() {
        java.lang.Object ref = imageId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          imageId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public com.google.protobuf.ByteString
          getImageIdBytes() {
        java.lang.Object ref = imageId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          imageId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder setImageId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        imageId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder clearImageId() {
        
        imageId_ = getDefaultInstance().getImageId();
        onChanged();
        return this;
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder setImageIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        imageId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.MsgImage)
    }

    // @@protoc_insertion_point(class_scope:core.MsgImage)
    private static final com.akaxin.proto.core.CoreProto.MsgImage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.MsgImage();
    }

    public static com.akaxin.proto.core.CoreProto.MsgImage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MsgImage>
        PARSER = new com.google.protobuf.AbstractParser<MsgImage>() {
      public MsgImage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new MsgImage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<MsgImage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MsgImage> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.MsgImage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MsgSecretImageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.MsgSecretImage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <code>string imageId = 4;</code>
     */
    java.lang.String getImageId();
    /**
     * <code>string imageId = 4;</code>
     */
    com.google.protobuf.ByteString
        getImageIdBytes();

    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    java.lang.String getBase64TsKey();
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    com.google.protobuf.ByteString
        getBase64TsKeyBytes();

    /**
     * <code>string to_device_id = 6;</code>
     */
    java.lang.String getToDeviceId();
    /**
     * <code>string to_device_id = 6;</code>
     */
    com.google.protobuf.ByteString
        getToDeviceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *加密图片消息
   * </pre>
   *
   * Protobuf type {@code core.MsgSecretImage}
   */
  public  static final class MsgSecretImage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.MsgSecretImage)
      MsgSecretImageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MsgSecretImage.newBuilder() to construct.
    private MsgSecretImage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MsgSecretImage() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      imageId_ = "";
      base64TsKey_ = "";
      toDeviceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MsgSecretImage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              imageId_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              base64TsKey_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              toDeviceId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretImage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretImage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.MsgSecretImage.class, com.akaxin.proto.core.CoreProto.MsgSecretImage.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IMAGEID_FIELD_NUMBER = 4;
    private volatile java.lang.Object imageId_;
    /**
     * <code>string imageId = 4;</code>
     */
    public java.lang.String getImageId() {
      java.lang.Object ref = imageId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        imageId_ = s;
        return s;
      }
    }
    /**
     * <code>string imageId = 4;</code>
     */
    public com.google.protobuf.ByteString
        getImageIdBytes() {
      java.lang.Object ref = imageId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        imageId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_TS_KEY_FIELD_NUMBER = 5;
    private volatile java.lang.Object base64TsKey_;
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public java.lang.String getBase64TsKey() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64TsKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public com.google.protobuf.ByteString
        getBase64TsKeyBytes() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64TsKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_DEVICE_ID_FIELD_NUMBER = 6;
    private volatile java.lang.Object toDeviceId_;
    /**
     * <code>string to_device_id = 6;</code>
     */
    public java.lang.String getToDeviceId() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        toDeviceId_ = s;
        return s;
      }
    }
    /**
     * <code>string to_device_id = 6;</code>
     */
    public com.google.protobuf.ByteString
        getToDeviceIdBytes() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toDeviceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getImageIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, imageId_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, toDeviceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getImageIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, imageId_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, toDeviceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.MsgSecretImage)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.MsgSecretImage other = (com.akaxin.proto.core.CoreProto.MsgSecretImage) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getImageId()
          .equals(other.getImageId());
      result = result && getBase64TsKey()
          .equals(other.getBase64TsKey());
      result = result && getToDeviceId()
          .equals(other.getToDeviceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + IMAGEID_FIELD_NUMBER;
      hash = (53 * hash) + getImageId().hashCode();
      hash = (37 * hash) + BASE64_TS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getBase64TsKey().hashCode();
      hash = (37 * hash) + TO_DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getToDeviceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretImage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.MsgSecretImage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *加密图片消息
     * </pre>
     *
     * Protobuf type {@code core.MsgSecretImage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.MsgSecretImage)
        com.akaxin.proto.core.CoreProto.MsgSecretImageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretImage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretImage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.MsgSecretImage.class, com.akaxin.proto.core.CoreProto.MsgSecretImage.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.MsgSecretImage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        imageId_ = "";

        base64TsKey_ = "";

        toDeviceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretImage_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretImage getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.MsgSecretImage.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretImage build() {
        com.akaxin.proto.core.CoreProto.MsgSecretImage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretImage buildPartial() {
        com.akaxin.proto.core.CoreProto.MsgSecretImage result = new com.akaxin.proto.core.CoreProto.MsgSecretImage(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.imageId_ = imageId_;
        result.base64TsKey_ = base64TsKey_;
        result.toDeviceId_ = toDeviceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.MsgSecretImage) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.MsgSecretImage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.MsgSecretImage other) {
        if (other == com.akaxin.proto.core.CoreProto.MsgSecretImage.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getImageId().isEmpty()) {
          imageId_ = other.imageId_;
          onChanged();
        }
        if (!other.getBase64TsKey().isEmpty()) {
          base64TsKey_ = other.base64TsKey_;
          onChanged();
        }
        if (!other.getToDeviceId().isEmpty()) {
          toDeviceId_ = other.toDeviceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.MsgSecretImage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.MsgSecretImage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object imageId_ = "";
      /**
       * <code>string imageId = 4;</code>
       */
      public java.lang.String getImageId() {
        java.lang.Object ref = imageId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          imageId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public com.google.protobuf.ByteString
          getImageIdBytes() {
        java.lang.Object ref = imageId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          imageId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder setImageId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        imageId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder clearImageId() {
        
        imageId_ = getDefaultInstance().getImageId();
        onChanged();
        return this;
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder setImageIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        imageId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64TsKey_ = "";
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public java.lang.String getBase64TsKey() {
        java.lang.Object ref = base64TsKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64TsKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public com.google.protobuf.ByteString
          getBase64TsKeyBytes() {
        java.lang.Object ref = base64TsKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64TsKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64TsKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder clearBase64TsKey() {
        
        base64TsKey_ = getDefaultInstance().getBase64TsKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64TsKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object toDeviceId_ = "";
      /**
       * <code>string to_device_id = 6;</code>
       */
      public java.lang.String getToDeviceId() {
        java.lang.Object ref = toDeviceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toDeviceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public com.google.protobuf.ByteString
          getToDeviceIdBytes() {
        java.lang.Object ref = toDeviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toDeviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        toDeviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder clearToDeviceId() {
        
        toDeviceId_ = getDefaultInstance().getToDeviceId();
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        toDeviceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.MsgSecretImage)
    }

    // @@protoc_insertion_point(class_scope:core.MsgSecretImage)
    private static final com.akaxin.proto.core.CoreProto.MsgSecretImage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.MsgSecretImage();
    }

    public static com.akaxin.proto.core.CoreProto.MsgSecretImage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MsgSecretImage>
        PARSER = new com.google.protobuf.AbstractParser<MsgSecretImage>() {
      public MsgSecretImage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new MsgSecretImage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<MsgSecretImage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MsgSecretImage> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.MsgSecretImage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupImageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupImage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <code>string imageId = 4;</code>
     */
    java.lang.String getImageId();
    /**
     * <code>string imageId = 4;</code>
     */
    com.google.protobuf.ByteString
        getImageIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *群普通图片消息
   * </pre>
   *
   * Protobuf type {@code core.GroupImage}
   */
  public  static final class GroupImage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupImage)
      GroupImageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupImage.newBuilder() to construct.
    private GroupImage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupImage() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      imageId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupImage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              imageId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupImage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupImage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupImage.class, com.akaxin.proto.core.CoreProto.GroupImage.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IMAGEID_FIELD_NUMBER = 4;
    private volatile java.lang.Object imageId_;
    /**
     * <code>string imageId = 4;</code>
     */
    public java.lang.String getImageId() {
      java.lang.Object ref = imageId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        imageId_ = s;
        return s;
      }
    }
    /**
     * <code>string imageId = 4;</code>
     */
    public com.google.protobuf.ByteString
        getImageIdBytes() {
      java.lang.Object ref = imageId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        imageId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getImageIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, imageId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getImageIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, imageId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupImage)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupImage other = (com.akaxin.proto.core.CoreProto.GroupImage) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getImageId()
          .equals(other.getImageId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + IMAGEID_FIELD_NUMBER;
      hash = (53 * hash) + getImageId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupImage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupImage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *群普通图片消息
     * </pre>
     *
     * Protobuf type {@code core.GroupImage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupImage)
        com.akaxin.proto.core.CoreProto.GroupImageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupImage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupImage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupImage.class, com.akaxin.proto.core.CoreProto.GroupImage.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupImage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        imageId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupImage_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupImage getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupImage.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupImage build() {
        com.akaxin.proto.core.CoreProto.GroupImage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupImage buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupImage result = new com.akaxin.proto.core.CoreProto.GroupImage(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.imageId_ = imageId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupImage) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupImage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupImage other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupImage.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getImageId().isEmpty()) {
          imageId_ = other.imageId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupImage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupImage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object imageId_ = "";
      /**
       * <code>string imageId = 4;</code>
       */
      public java.lang.String getImageId() {
        java.lang.Object ref = imageId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          imageId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public com.google.protobuf.ByteString
          getImageIdBytes() {
        java.lang.Object ref = imageId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          imageId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder setImageId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        imageId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder clearImageId() {
        
        imageId_ = getDefaultInstance().getImageId();
        onChanged();
        return this;
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder setImageIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        imageId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupImage)
    }

    // @@protoc_insertion_point(class_scope:core.GroupImage)
    private static final com.akaxin.proto.core.CoreProto.GroupImage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupImage();
    }

    public static com.akaxin.proto.core.CoreProto.GroupImage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupImage>
        PARSER = new com.google.protobuf.AbstractParser<GroupImage>() {
      public GroupImage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupImage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupImage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupImage> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupImage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupSecretImageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupSecretImage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <code>string imageId = 4;</code>
     */
    java.lang.String getImageId();
    /**
     * <code>string imageId = 4;</code>
     */
    com.google.protobuf.ByteString
        getImageIdBytes();

    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    java.lang.String getBase64TsKey();
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    com.google.protobuf.ByteString
        getBase64TsKeyBytes();

    /**
     * <code>string to_device_id = 6;</code>
     */
    java.lang.String getToDeviceId();
    /**
     * <code>string to_device_id = 6;</code>
     */
    com.google.protobuf.ByteString
        getToDeviceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *群加密图片消息
   * </pre>
   *
   * Protobuf type {@code core.GroupSecretImage}
   */
  public  static final class GroupSecretImage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupSecretImage)
      GroupSecretImageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupSecretImage.newBuilder() to construct.
    private GroupSecretImage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupSecretImage() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      imageId_ = "";
      base64TsKey_ = "";
      toDeviceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupSecretImage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              imageId_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              base64TsKey_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              toDeviceId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretImage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretImage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupSecretImage.class, com.akaxin.proto.core.CoreProto.GroupSecretImage.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IMAGEID_FIELD_NUMBER = 4;
    private volatile java.lang.Object imageId_;
    /**
     * <code>string imageId = 4;</code>
     */
    public java.lang.String getImageId() {
      java.lang.Object ref = imageId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        imageId_ = s;
        return s;
      }
    }
    /**
     * <code>string imageId = 4;</code>
     */
    public com.google.protobuf.ByteString
        getImageIdBytes() {
      java.lang.Object ref = imageId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        imageId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_TS_KEY_FIELD_NUMBER = 5;
    private volatile java.lang.Object base64TsKey_;
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public java.lang.String getBase64TsKey() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64TsKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public com.google.protobuf.ByteString
        getBase64TsKeyBytes() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64TsKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_DEVICE_ID_FIELD_NUMBER = 6;
    private volatile java.lang.Object toDeviceId_;
    /**
     * <code>string to_device_id = 6;</code>
     */
    public java.lang.String getToDeviceId() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        toDeviceId_ = s;
        return s;
      }
    }
    /**
     * <code>string to_device_id = 6;</code>
     */
    public com.google.protobuf.ByteString
        getToDeviceIdBytes() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toDeviceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getImageIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, imageId_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, toDeviceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getImageIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, imageId_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, toDeviceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupSecretImage)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupSecretImage other = (com.akaxin.proto.core.CoreProto.GroupSecretImage) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getImageId()
          .equals(other.getImageId());
      result = result && getBase64TsKey()
          .equals(other.getBase64TsKey());
      result = result && getToDeviceId()
          .equals(other.getToDeviceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + IMAGEID_FIELD_NUMBER;
      hash = (53 * hash) + getImageId().hashCode();
      hash = (37 * hash) + BASE64_TS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getBase64TsKey().hashCode();
      hash = (37 * hash) + TO_DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getToDeviceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretImage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupSecretImage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *群加密图片消息
     * </pre>
     *
     * Protobuf type {@code core.GroupSecretImage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupSecretImage)
        com.akaxin.proto.core.CoreProto.GroupSecretImageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretImage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretImage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupSecretImage.class, com.akaxin.proto.core.CoreProto.GroupSecretImage.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupSecretImage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        imageId_ = "";

        base64TsKey_ = "";

        toDeviceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretImage_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretImage getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupSecretImage.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretImage build() {
        com.akaxin.proto.core.CoreProto.GroupSecretImage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretImage buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupSecretImage result = new com.akaxin.proto.core.CoreProto.GroupSecretImage(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.imageId_ = imageId_;
        result.base64TsKey_ = base64TsKey_;
        result.toDeviceId_ = toDeviceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupSecretImage) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupSecretImage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupSecretImage other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupSecretImage.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getImageId().isEmpty()) {
          imageId_ = other.imageId_;
          onChanged();
        }
        if (!other.getBase64TsKey().isEmpty()) {
          base64TsKey_ = other.base64TsKey_;
          onChanged();
        }
        if (!other.getToDeviceId().isEmpty()) {
          toDeviceId_ = other.toDeviceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupSecretImage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupSecretImage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object imageId_ = "";
      /**
       * <code>string imageId = 4;</code>
       */
      public java.lang.String getImageId() {
        java.lang.Object ref = imageId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          imageId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public com.google.protobuf.ByteString
          getImageIdBytes() {
        java.lang.Object ref = imageId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          imageId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder setImageId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        imageId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder clearImageId() {
        
        imageId_ = getDefaultInstance().getImageId();
        onChanged();
        return this;
      }
      /**
       * <code>string imageId = 4;</code>
       */
      public Builder setImageIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        imageId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64TsKey_ = "";
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public java.lang.String getBase64TsKey() {
        java.lang.Object ref = base64TsKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64TsKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public com.google.protobuf.ByteString
          getBase64TsKeyBytes() {
        java.lang.Object ref = base64TsKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64TsKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64TsKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder clearBase64TsKey() {
        
        base64TsKey_ = getDefaultInstance().getBase64TsKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64TsKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object toDeviceId_ = "";
      /**
       * <code>string to_device_id = 6;</code>
       */
      public java.lang.String getToDeviceId() {
        java.lang.Object ref = toDeviceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toDeviceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public com.google.protobuf.ByteString
          getToDeviceIdBytes() {
        java.lang.Object ref = toDeviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toDeviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        toDeviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder clearToDeviceId() {
        
        toDeviceId_ = getDefaultInstance().getToDeviceId();
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        toDeviceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupSecretImage)
    }

    // @@protoc_insertion_point(class_scope:core.GroupSecretImage)
    private static final com.akaxin.proto.core.CoreProto.GroupSecretImage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupSecretImage();
    }

    public static com.akaxin.proto.core.CoreProto.GroupSecretImage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupSecretImage>
        PARSER = new com.google.protobuf.AbstractParser<GroupSecretImage>() {
      public GroupSecretImage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupSecretImage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupSecretImage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupSecretImage> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupSecretImage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MsgVoiceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.MsgVoice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <pre>
     *语音地址ID
     * </pre>
     *
     * <code>string voiceId = 4;</code>
     */
    java.lang.String getVoiceId();
    /**
     * <pre>
     *语音地址ID
     * </pre>
     *
     * <code>string voiceId = 4;</code>
     */
    com.google.protobuf.ByteString
        getVoiceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *普通语音消息
   * </pre>
   *
   * Protobuf type {@code core.MsgVoice}
   */
  public  static final class MsgVoice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.MsgVoice)
      MsgVoiceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MsgVoice.newBuilder() to construct.
    private MsgVoice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MsgVoice() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      voiceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MsgVoice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              voiceId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgVoice_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgVoice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.MsgVoice.class, com.akaxin.proto.core.CoreProto.MsgVoice.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOICEID_FIELD_NUMBER = 4;
    private volatile java.lang.Object voiceId_;
    /**
     * <pre>
     *语音地址ID
     * </pre>
     *
     * <code>string voiceId = 4;</code>
     */
    public java.lang.String getVoiceId() {
      java.lang.Object ref = voiceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        voiceId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *语音地址ID
     * </pre>
     *
     * <code>string voiceId = 4;</code>
     */
    public com.google.protobuf.ByteString
        getVoiceIdBytes() {
      java.lang.Object ref = voiceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        voiceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getVoiceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, voiceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getVoiceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, voiceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.MsgVoice)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.MsgVoice other = (com.akaxin.proto.core.CoreProto.MsgVoice) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getVoiceId()
          .equals(other.getVoiceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + VOICEID_FIELD_NUMBER;
      hash = (53 * hash) + getVoiceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgVoice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.MsgVoice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *普通语音消息
     * </pre>
     *
     * Protobuf type {@code core.MsgVoice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.MsgVoice)
        com.akaxin.proto.core.CoreProto.MsgVoiceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgVoice_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgVoice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.MsgVoice.class, com.akaxin.proto.core.CoreProto.MsgVoice.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.MsgVoice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        voiceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgVoice_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.MsgVoice getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.MsgVoice.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.MsgVoice build() {
        com.akaxin.proto.core.CoreProto.MsgVoice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.MsgVoice buildPartial() {
        com.akaxin.proto.core.CoreProto.MsgVoice result = new com.akaxin.proto.core.CoreProto.MsgVoice(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.voiceId_ = voiceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.MsgVoice) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.MsgVoice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.MsgVoice other) {
        if (other == com.akaxin.proto.core.CoreProto.MsgVoice.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getVoiceId().isEmpty()) {
          voiceId_ = other.voiceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.MsgVoice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.MsgVoice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object voiceId_ = "";
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public java.lang.String getVoiceId() {
        java.lang.Object ref = voiceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          voiceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public com.google.protobuf.ByteString
          getVoiceIdBytes() {
        java.lang.Object ref = voiceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          voiceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public Builder setVoiceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        voiceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public Builder clearVoiceId() {
        
        voiceId_ = getDefaultInstance().getVoiceId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public Builder setVoiceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        voiceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.MsgVoice)
    }

    // @@protoc_insertion_point(class_scope:core.MsgVoice)
    private static final com.akaxin.proto.core.CoreProto.MsgVoice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.MsgVoice();
    }

    public static com.akaxin.proto.core.CoreProto.MsgVoice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MsgVoice>
        PARSER = new com.google.protobuf.AbstractParser<MsgVoice>() {
      public MsgVoice parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new MsgVoice(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<MsgVoice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MsgVoice> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.MsgVoice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MsgSecretVoiceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.MsgSecretVoice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <code>string voiceId = 4;</code>
     */
    java.lang.String getVoiceId();
    /**
     * <code>string voiceId = 4;</code>
     */
    com.google.protobuf.ByteString
        getVoiceIdBytes();

    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    java.lang.String getBase64TsKey();
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    com.google.protobuf.ByteString
        getBase64TsKeyBytes();

    /**
     * <code>string to_device_id = 6;</code>
     */
    java.lang.String getToDeviceId();
    /**
     * <code>string to_device_id = 6;</code>
     */
    com.google.protobuf.ByteString
        getToDeviceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *加密语音消息
   * </pre>
   *
   * Protobuf type {@code core.MsgSecretVoice}
   */
  public  static final class MsgSecretVoice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.MsgSecretVoice)
      MsgSecretVoiceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MsgSecretVoice.newBuilder() to construct.
    private MsgSecretVoice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MsgSecretVoice() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      voiceId_ = "";
      base64TsKey_ = "";
      toDeviceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MsgSecretVoice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              voiceId_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              base64TsKey_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              toDeviceId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretVoice_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretVoice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.MsgSecretVoice.class, com.akaxin.proto.core.CoreProto.MsgSecretVoice.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOICEID_FIELD_NUMBER = 4;
    private volatile java.lang.Object voiceId_;
    /**
     * <code>string voiceId = 4;</code>
     */
    public java.lang.String getVoiceId() {
      java.lang.Object ref = voiceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        voiceId_ = s;
        return s;
      }
    }
    /**
     * <code>string voiceId = 4;</code>
     */
    public com.google.protobuf.ByteString
        getVoiceIdBytes() {
      java.lang.Object ref = voiceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        voiceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_TS_KEY_FIELD_NUMBER = 5;
    private volatile java.lang.Object base64TsKey_;
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public java.lang.String getBase64TsKey() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64TsKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public com.google.protobuf.ByteString
        getBase64TsKeyBytes() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64TsKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_DEVICE_ID_FIELD_NUMBER = 6;
    private volatile java.lang.Object toDeviceId_;
    /**
     * <code>string to_device_id = 6;</code>
     */
    public java.lang.String getToDeviceId() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        toDeviceId_ = s;
        return s;
      }
    }
    /**
     * <code>string to_device_id = 6;</code>
     */
    public com.google.protobuf.ByteString
        getToDeviceIdBytes() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toDeviceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getVoiceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, voiceId_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, toDeviceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getVoiceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, voiceId_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, toDeviceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.MsgSecretVoice)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.MsgSecretVoice other = (com.akaxin.proto.core.CoreProto.MsgSecretVoice) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getVoiceId()
          .equals(other.getVoiceId());
      result = result && getBase64TsKey()
          .equals(other.getBase64TsKey());
      result = result && getToDeviceId()
          .equals(other.getToDeviceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + VOICEID_FIELD_NUMBER;
      hash = (53 * hash) + getVoiceId().hashCode();
      hash = (37 * hash) + BASE64_TS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getBase64TsKey().hashCode();
      hash = (37 * hash) + TO_DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getToDeviceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.MsgSecretVoice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *加密语音消息
     * </pre>
     *
     * Protobuf type {@code core.MsgSecretVoice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.MsgSecretVoice)
        com.akaxin.proto.core.CoreProto.MsgSecretVoiceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretVoice_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretVoice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.MsgSecretVoice.class, com.akaxin.proto.core.CoreProto.MsgSecretVoice.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.MsgSecretVoice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        voiceId_ = "";

        base64TsKey_ = "";

        toDeviceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_MsgSecretVoice_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretVoice getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.MsgSecretVoice.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretVoice build() {
        com.akaxin.proto.core.CoreProto.MsgSecretVoice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.MsgSecretVoice buildPartial() {
        com.akaxin.proto.core.CoreProto.MsgSecretVoice result = new com.akaxin.proto.core.CoreProto.MsgSecretVoice(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.voiceId_ = voiceId_;
        result.base64TsKey_ = base64TsKey_;
        result.toDeviceId_ = toDeviceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.MsgSecretVoice) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.MsgSecretVoice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.MsgSecretVoice other) {
        if (other == com.akaxin.proto.core.CoreProto.MsgSecretVoice.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getVoiceId().isEmpty()) {
          voiceId_ = other.voiceId_;
          onChanged();
        }
        if (!other.getBase64TsKey().isEmpty()) {
          base64TsKey_ = other.base64TsKey_;
          onChanged();
        }
        if (!other.getToDeviceId().isEmpty()) {
          toDeviceId_ = other.toDeviceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.MsgSecretVoice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.MsgSecretVoice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object voiceId_ = "";
      /**
       * <code>string voiceId = 4;</code>
       */
      public java.lang.String getVoiceId() {
        java.lang.Object ref = voiceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          voiceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string voiceId = 4;</code>
       */
      public com.google.protobuf.ByteString
          getVoiceIdBytes() {
        java.lang.Object ref = voiceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          voiceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string voiceId = 4;</code>
       */
      public Builder setVoiceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        voiceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string voiceId = 4;</code>
       */
      public Builder clearVoiceId() {
        
        voiceId_ = getDefaultInstance().getVoiceId();
        onChanged();
        return this;
      }
      /**
       * <code>string voiceId = 4;</code>
       */
      public Builder setVoiceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        voiceId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64TsKey_ = "";
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public java.lang.String getBase64TsKey() {
        java.lang.Object ref = base64TsKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64TsKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public com.google.protobuf.ByteString
          getBase64TsKeyBytes() {
        java.lang.Object ref = base64TsKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64TsKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64TsKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder clearBase64TsKey() {
        
        base64TsKey_ = getDefaultInstance().getBase64TsKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64TsKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object toDeviceId_ = "";
      /**
       * <code>string to_device_id = 6;</code>
       */
      public java.lang.String getToDeviceId() {
        java.lang.Object ref = toDeviceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toDeviceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public com.google.protobuf.ByteString
          getToDeviceIdBytes() {
        java.lang.Object ref = toDeviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toDeviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        toDeviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder clearToDeviceId() {
        
        toDeviceId_ = getDefaultInstance().getToDeviceId();
        onChanged();
        return this;
      }
      /**
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        toDeviceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.MsgSecretVoice)
    }

    // @@protoc_insertion_point(class_scope:core.MsgSecretVoice)
    private static final com.akaxin.proto.core.CoreProto.MsgSecretVoice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.MsgSecretVoice();
    }

    public static com.akaxin.proto.core.CoreProto.MsgSecretVoice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MsgSecretVoice>
        PARSER = new com.google.protobuf.AbstractParser<MsgSecretVoice>() {
      public MsgSecretVoice parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new MsgSecretVoice(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<MsgSecretVoice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MsgSecretVoice> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.MsgSecretVoice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupVoiceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupVoice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <pre>
     *语音地址ID
     * </pre>
     *
     * <code>string voiceId = 4;</code>
     */
    java.lang.String getVoiceId();
    /**
     * <pre>
     *语音地址ID
     * </pre>
     *
     * <code>string voiceId = 4;</code>
     */
    com.google.protobuf.ByteString
        getVoiceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *群语音消息
   * </pre>
   *
   * Protobuf type {@code core.GroupVoice}
   */
  public  static final class GroupVoice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupVoice)
      GroupVoiceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupVoice.newBuilder() to construct.
    private GroupVoice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupVoice() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      voiceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupVoice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              voiceId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupVoice_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupVoice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupVoice.class, com.akaxin.proto.core.CoreProto.GroupVoice.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOICEID_FIELD_NUMBER = 4;
    private volatile java.lang.Object voiceId_;
    /**
     * <pre>
     *语音地址ID
     * </pre>
     *
     * <code>string voiceId = 4;</code>
     */
    public java.lang.String getVoiceId() {
      java.lang.Object ref = voiceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        voiceId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *语音地址ID
     * </pre>
     *
     * <code>string voiceId = 4;</code>
     */
    public com.google.protobuf.ByteString
        getVoiceIdBytes() {
      java.lang.Object ref = voiceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        voiceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getVoiceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, voiceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getVoiceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, voiceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupVoice)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupVoice other = (com.akaxin.proto.core.CoreProto.GroupVoice) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getVoiceId()
          .equals(other.getVoiceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + VOICEID_FIELD_NUMBER;
      hash = (53 * hash) + getVoiceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupVoice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupVoice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *群语音消息
     * </pre>
     *
     * Protobuf type {@code core.GroupVoice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupVoice)
        com.akaxin.proto.core.CoreProto.GroupVoiceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupVoice_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupVoice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupVoice.class, com.akaxin.proto.core.CoreProto.GroupVoice.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupVoice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        voiceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupVoice_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupVoice getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupVoice.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupVoice build() {
        com.akaxin.proto.core.CoreProto.GroupVoice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupVoice buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupVoice result = new com.akaxin.proto.core.CoreProto.GroupVoice(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.voiceId_ = voiceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupVoice) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupVoice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupVoice other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupVoice.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getVoiceId().isEmpty()) {
          voiceId_ = other.voiceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupVoice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupVoice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object voiceId_ = "";
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public java.lang.String getVoiceId() {
        java.lang.Object ref = voiceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          voiceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public com.google.protobuf.ByteString
          getVoiceIdBytes() {
        java.lang.Object ref = voiceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          voiceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public Builder setVoiceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        voiceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public Builder clearVoiceId() {
        
        voiceId_ = getDefaultInstance().getVoiceId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *语音地址ID
       * </pre>
       *
       * <code>string voiceId = 4;</code>
       */
      public Builder setVoiceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        voiceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupVoice)
    }

    // @@protoc_insertion_point(class_scope:core.GroupVoice)
    private static final com.akaxin.proto.core.CoreProto.GroupVoice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupVoice();
    }

    public static com.akaxin.proto.core.CoreProto.GroupVoice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupVoice>
        PARSER = new com.google.protobuf.AbstractParser<GroupVoice>() {
      public GroupVoice parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupVoice(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupVoice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupVoice> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupVoice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupSecretVoiceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupSecretVoice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <code>string voiceId = 4;</code>
     */
    java.lang.String getVoiceId();
    /**
     * <code>string voiceId = 4;</code>
     */
    com.google.protobuf.ByteString
        getVoiceIdBytes();

    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    java.lang.String getBase64TsKey();
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    com.google.protobuf.ByteString
        getBase64TsKeyBytes();

    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 6;</code>
     */
    java.lang.String getToDeviceId();
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 6;</code>
     */
    com.google.protobuf.ByteString
        getToDeviceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *群语音加密消息
   * </pre>
   *
   * Protobuf type {@code core.GroupSecretVoice}
   */
  public  static final class GroupSecretVoice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupSecretVoice)
      GroupSecretVoiceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupSecretVoice.newBuilder() to construct.
    private GroupSecretVoice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupSecretVoice() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      voiceId_ = "";
      base64TsKey_ = "";
      toDeviceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupSecretVoice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              voiceId_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              base64TsKey_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              toDeviceId_ = s;
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretVoice_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretVoice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupSecretVoice.class, com.akaxin.proto.core.CoreProto.GroupSecretVoice.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOICEID_FIELD_NUMBER = 4;
    private volatile java.lang.Object voiceId_;
    /**
     * <code>string voiceId = 4;</code>
     */
    public java.lang.String getVoiceId() {
      java.lang.Object ref = voiceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        voiceId_ = s;
        return s;
      }
    }
    /**
     * <code>string voiceId = 4;</code>
     */
    public com.google.protobuf.ByteString
        getVoiceIdBytes() {
      java.lang.Object ref = voiceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        voiceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_TS_KEY_FIELD_NUMBER = 5;
    private volatile java.lang.Object base64TsKey_;
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public java.lang.String getBase64TsKey() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64TsKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密key，值为aes密钥（原始bytes base64encode后的字符串）
     * </pre>
     *
     * <code>string base64_ts_key = 5;</code>
     */
    public com.google.protobuf.ByteString
        getBase64TsKeyBytes() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64TsKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_DEVICE_ID_FIELD_NUMBER = 6;
    private volatile java.lang.Object toDeviceId_;
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 6;</code>
     */
    public java.lang.String getToDeviceId() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        toDeviceId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 6;</code>
     */
    public com.google.protobuf.ByteString
        getToDeviceIdBytes() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toDeviceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getVoiceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, voiceId_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, toDeviceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getVoiceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, voiceId_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, toDeviceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupSecretVoice)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupSecretVoice other = (com.akaxin.proto.core.CoreProto.GroupSecretVoice) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getVoiceId()
          .equals(other.getVoiceId());
      result = result && getBase64TsKey()
          .equals(other.getBase64TsKey());
      result = result && getToDeviceId()
          .equals(other.getToDeviceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + VOICEID_FIELD_NUMBER;
      hash = (53 * hash) + getVoiceId().hashCode();
      hash = (37 * hash) + BASE64_TS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getBase64TsKey().hashCode();
      hash = (37 * hash) + TO_DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getToDeviceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupSecretVoice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *群语音加密消息
     * </pre>
     *
     * Protobuf type {@code core.GroupSecretVoice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupSecretVoice)
        com.akaxin.proto.core.CoreProto.GroupSecretVoiceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretVoice_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretVoice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupSecretVoice.class, com.akaxin.proto.core.CoreProto.GroupSecretVoice.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupSecretVoice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        voiceId_ = "";

        base64TsKey_ = "";

        toDeviceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretVoice_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretVoice getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupSecretVoice.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretVoice build() {
        com.akaxin.proto.core.CoreProto.GroupSecretVoice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretVoice buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupSecretVoice result = new com.akaxin.proto.core.CoreProto.GroupSecretVoice(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.voiceId_ = voiceId_;
        result.base64TsKey_ = base64TsKey_;
        result.toDeviceId_ = toDeviceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupSecretVoice) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupSecretVoice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupSecretVoice other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupSecretVoice.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getVoiceId().isEmpty()) {
          voiceId_ = other.voiceId_;
          onChanged();
        }
        if (!other.getBase64TsKey().isEmpty()) {
          base64TsKey_ = other.base64TsKey_;
          onChanged();
        }
        if (!other.getToDeviceId().isEmpty()) {
          toDeviceId_ = other.toDeviceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupSecretVoice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupSecretVoice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object voiceId_ = "";
      /**
       * <code>string voiceId = 4;</code>
       */
      public java.lang.String getVoiceId() {
        java.lang.Object ref = voiceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          voiceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string voiceId = 4;</code>
       */
      public com.google.protobuf.ByteString
          getVoiceIdBytes() {
        java.lang.Object ref = voiceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          voiceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string voiceId = 4;</code>
       */
      public Builder setVoiceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        voiceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string voiceId = 4;</code>
       */
      public Builder clearVoiceId() {
        
        voiceId_ = getDefaultInstance().getVoiceId();
        onChanged();
        return this;
      }
      /**
       * <code>string voiceId = 4;</code>
       */
      public Builder setVoiceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        voiceId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64TsKey_ = "";
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public java.lang.String getBase64TsKey() {
        java.lang.Object ref = base64TsKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64TsKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public com.google.protobuf.ByteString
          getBase64TsKeyBytes() {
        java.lang.Object ref = base64TsKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64TsKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64TsKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder clearBase64TsKey() {
        
        base64TsKey_ = getDefaultInstance().getBase64TsKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密key，值为aes密钥（原始bytes base64encode后的字符串）
       * </pre>
       *
       * <code>string base64_ts_key = 5;</code>
       */
      public Builder setBase64TsKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64TsKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object toDeviceId_ = "";
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 6;</code>
       */
      public java.lang.String getToDeviceId() {
        java.lang.Object ref = toDeviceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toDeviceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 6;</code>
       */
      public com.google.protobuf.ByteString
          getToDeviceIdBytes() {
        java.lang.Object ref = toDeviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toDeviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        toDeviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 6;</code>
       */
      public Builder clearToDeviceId() {
        
        toDeviceId_ = getDefaultInstance().getToDeviceId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 6;</code>
       */
      public Builder setToDeviceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        toDeviceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupSecretVoice)
    }

    // @@protoc_insertion_point(class_scope:core.GroupSecretVoice)
    private static final com.akaxin.proto.core.CoreProto.GroupSecretVoice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupSecretVoice();
    }

    public static com.akaxin.proto.core.CoreProto.GroupSecretVoice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupSecretVoice>
        PARSER = new com.google.protobuf.AbstractParser<GroupSecretVoice>() {
      public GroupSecretVoice parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupSecretVoice(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupSecretVoice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupSecretVoice> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupSecretVoice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface U2MapOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.U2Map)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <pre>
     *经度
     * </pre>
     *
     * <code>string lng = 4;</code>
     */
    java.lang.String getLng();
    /**
     * <pre>
     *经度
     * </pre>
     *
     * <code>string lng = 4;</code>
     */
    com.google.protobuf.ByteString
        getLngBytes();

    /**
     * <pre>
     *纬度
     * </pre>
     *
     * <code>string lat = 5;</code>
     */
    java.lang.String getLat();
    /**
     * <pre>
     *纬度
     * </pre>
     *
     * <code>string lat = 5;</code>
     */
    com.google.protobuf.ByteString
        getLatBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 6;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *普通地理位置消息
   * </pre>
   *
   * Protobuf type {@code core.U2Map}
   */
  public  static final class U2Map extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.U2Map)
      U2MapOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use U2Map.newBuilder() to construct.
    private U2Map(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private U2Map() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      lng_ = "";
      lat_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private U2Map(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              lng_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              lat_ = s;
              break;
            }
            case 48: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2Map_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2Map_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.U2Map.class, com.akaxin.proto.core.CoreProto.U2Map.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LNG_FIELD_NUMBER = 4;
    private volatile java.lang.Object lng_;
    /**
     * <pre>
     *经度
     * </pre>
     *
     * <code>string lng = 4;</code>
     */
    public java.lang.String getLng() {
      java.lang.Object ref = lng_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        lng_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *经度
     * </pre>
     *
     * <code>string lng = 4;</code>
     */
    public com.google.protobuf.ByteString
        getLngBytes() {
      java.lang.Object ref = lng_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lng_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LAT_FIELD_NUMBER = 5;
    private volatile java.lang.Object lat_;
    /**
     * <pre>
     *纬度
     * </pre>
     *
     * <code>string lat = 5;</code>
     */
    public java.lang.String getLat() {
      java.lang.Object ref = lat_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        lat_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *纬度
     * </pre>
     *
     * <code>string lat = 5;</code>
     */
    public com.google.protobuf.ByteString
        getLatBytes() {
      java.lang.Object ref = lat_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lat_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 6;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 6;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getLngBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, lng_);
      }
      if (!getLatBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, lat_);
      }
      if (time_ != 0L) {
        output.writeInt64(6, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getLngBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, lng_);
      }
      if (!getLatBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, lat_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.U2Map)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.U2Map other = (com.akaxin.proto.core.CoreProto.U2Map) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getLng()
          .equals(other.getLng());
      result = result && getLat()
          .equals(other.getLat());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + LNG_FIELD_NUMBER;
      hash = (53 * hash) + getLng().hashCode();
      hash = (37 * hash) + LAT_FIELD_NUMBER;
      hash = (53 * hash) + getLat().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Map parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.U2Map prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *普通地理位置消息
     * </pre>
     *
     * Protobuf type {@code core.U2Map}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.U2Map)
        com.akaxin.proto.core.CoreProto.U2MapOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Map_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Map_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.U2Map.class, com.akaxin.proto.core.CoreProto.U2Map.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.U2Map.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        lng_ = "";

        lat_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Map_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.U2Map getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.U2Map.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.U2Map build() {
        com.akaxin.proto.core.CoreProto.U2Map result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.U2Map buildPartial() {
        com.akaxin.proto.core.CoreProto.U2Map result = new com.akaxin.proto.core.CoreProto.U2Map(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.lng_ = lng_;
        result.lat_ = lat_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.U2Map) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.U2Map)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.U2Map other) {
        if (other == com.akaxin.proto.core.CoreProto.U2Map.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getLng().isEmpty()) {
          lng_ = other.lng_;
          onChanged();
        }
        if (!other.getLat().isEmpty()) {
          lat_ = other.lat_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.U2Map parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.U2Map) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object lng_ = "";
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public java.lang.String getLng() {
        java.lang.Object ref = lng_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          lng_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public com.google.protobuf.ByteString
          getLngBytes() {
        java.lang.Object ref = lng_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lng_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public Builder setLng(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        lng_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public Builder clearLng() {
        
        lng_ = getDefaultInstance().getLng();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public Builder setLngBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        lng_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object lat_ = "";
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public java.lang.String getLat() {
        java.lang.Object ref = lat_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          lat_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public com.google.protobuf.ByteString
          getLatBytes() {
        java.lang.Object ref = lat_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lat_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public Builder setLat(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        lat_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public Builder clearLat() {
        
        lat_ = getDefaultInstance().getLat();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public Builder setLatBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        lat_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 6;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 6;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 6;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.U2Map)
    }

    // @@protoc_insertion_point(class_scope:core.U2Map)
    private static final com.akaxin.proto.core.CoreProto.U2Map DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.U2Map();
    }

    public static com.akaxin.proto.core.CoreProto.U2Map getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<U2Map>
        PARSER = new com.google.protobuf.AbstractParser<U2Map>() {
      public U2Map parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new U2Map(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<U2Map> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<U2Map> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.U2Map getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface U2SecretMapOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.U2SecretMap)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <pre>
     *加密Base64经度
     * </pre>
     *
     * <code>string base64_lng = 4;</code>
     */
    java.lang.String getBase64Lng();
    /**
     * <pre>
     *加密Base64经度
     * </pre>
     *
     * <code>string base64_lng = 4;</code>
     */
    com.google.protobuf.ByteString
        getBase64LngBytes();

    /**
     * <pre>
     *加密Base64纬度
     * </pre>
     *
     * <code>string base64_lat = 5;</code>
     */
    java.lang.String getBase64Lat();
    /**
     * <pre>
     *加密Base64纬度
     * </pre>
     *
     * <code>string base64_lat = 5;</code>
     */
    com.google.protobuf.ByteString
        getBase64LatBytes();

    /**
     * <pre>
     *Base64的加密key，用于AES加密使用
     * </pre>
     *
     * <code>string base64_ts_key = 6;</code>
     */
    java.lang.String getBase64TsKey();
    /**
     * <pre>
     *Base64的加密key，用于AES加密使用
     * </pre>
     *
     * <code>string base64_ts_key = 6;</code>
     */
    com.google.protobuf.ByteString
        getBase64TsKeyBytes();

    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 7;</code>
     */
    java.lang.String getToDeviceId();
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 7;</code>
     */
    com.google.protobuf.ByteString
        getToDeviceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 8;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *加密地理位置消息
   * </pre>
   *
   * Protobuf type {@code core.U2SecretMap}
   */
  public  static final class U2SecretMap extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.U2SecretMap)
      U2SecretMapOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use U2SecretMap.newBuilder() to construct.
    private U2SecretMap(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private U2SecretMap() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      base64Lng_ = "";
      base64Lat_ = "";
      base64TsKey_ = "";
      toDeviceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private U2SecretMap(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              base64Lng_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              base64Lat_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              base64TsKey_ = s;
              break;
            }
            case 58: {
              java.lang.String s = input.readStringRequireUtf8();

              toDeviceId_ = s;
              break;
            }
            case 64: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2SecretMap_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2SecretMap_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.U2SecretMap.class, com.akaxin.proto.core.CoreProto.U2SecretMap.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_LNG_FIELD_NUMBER = 4;
    private volatile java.lang.Object base64Lng_;
    /**
     * <pre>
     *加密Base64经度
     * </pre>
     *
     * <code>string base64_lng = 4;</code>
     */
    public java.lang.String getBase64Lng() {
      java.lang.Object ref = base64Lng_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64Lng_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密Base64经度
     * </pre>
     *
     * <code>string base64_lng = 4;</code>
     */
    public com.google.protobuf.ByteString
        getBase64LngBytes() {
      java.lang.Object ref = base64Lng_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64Lng_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_LAT_FIELD_NUMBER = 5;
    private volatile java.lang.Object base64Lat_;
    /**
     * <pre>
     *加密Base64纬度
     * </pre>
     *
     * <code>string base64_lat = 5;</code>
     */
    public java.lang.String getBase64Lat() {
      java.lang.Object ref = base64Lat_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64Lat_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密Base64纬度
     * </pre>
     *
     * <code>string base64_lat = 5;</code>
     */
    public com.google.protobuf.ByteString
        getBase64LatBytes() {
      java.lang.Object ref = base64Lat_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64Lat_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_TS_KEY_FIELD_NUMBER = 6;
    private volatile java.lang.Object base64TsKey_;
    /**
     * <pre>
     *Base64的加密key，用于AES加密使用
     * </pre>
     *
     * <code>string base64_ts_key = 6;</code>
     */
    public java.lang.String getBase64TsKey() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64TsKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *Base64的加密key，用于AES加密使用
     * </pre>
     *
     * <code>string base64_ts_key = 6;</code>
     */
    public com.google.protobuf.ByteString
        getBase64TsKeyBytes() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64TsKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_DEVICE_ID_FIELD_NUMBER = 7;
    private volatile java.lang.Object toDeviceId_;
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 7;</code>
     */
    public java.lang.String getToDeviceId() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        toDeviceId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 7;</code>
     */
    public com.google.protobuf.ByteString
        getToDeviceIdBytes() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toDeviceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 8;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 8;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getBase64LngBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, base64Lng_);
      }
      if (!getBase64LatBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, base64Lat_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, toDeviceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(8, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getBase64LngBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, base64Lng_);
      }
      if (!getBase64LatBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, base64Lat_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, toDeviceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.U2SecretMap)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.U2SecretMap other = (com.akaxin.proto.core.CoreProto.U2SecretMap) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getBase64Lng()
          .equals(other.getBase64Lng());
      result = result && getBase64Lat()
          .equals(other.getBase64Lat());
      result = result && getBase64TsKey()
          .equals(other.getBase64TsKey());
      result = result && getToDeviceId()
          .equals(other.getToDeviceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + BASE64_LNG_FIELD_NUMBER;
      hash = (53 * hash) + getBase64Lng().hashCode();
      hash = (37 * hash) + BASE64_LAT_FIELD_NUMBER;
      hash = (53 * hash) + getBase64Lat().hashCode();
      hash = (37 * hash) + BASE64_TS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getBase64TsKey().hashCode();
      hash = (37 * hash) + TO_DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getToDeviceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2SecretMap parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.U2SecretMap prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *加密地理位置消息
     * </pre>
     *
     * Protobuf type {@code core.U2SecretMap}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.U2SecretMap)
        com.akaxin.proto.core.CoreProto.U2SecretMapOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2SecretMap_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2SecretMap_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.U2SecretMap.class, com.akaxin.proto.core.CoreProto.U2SecretMap.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.U2SecretMap.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        base64Lng_ = "";

        base64Lat_ = "";

        base64TsKey_ = "";

        toDeviceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2SecretMap_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.U2SecretMap getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.U2SecretMap.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.U2SecretMap build() {
        com.akaxin.proto.core.CoreProto.U2SecretMap result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.U2SecretMap buildPartial() {
        com.akaxin.proto.core.CoreProto.U2SecretMap result = new com.akaxin.proto.core.CoreProto.U2SecretMap(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.base64Lng_ = base64Lng_;
        result.base64Lat_ = base64Lat_;
        result.base64TsKey_ = base64TsKey_;
        result.toDeviceId_ = toDeviceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.U2SecretMap) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.U2SecretMap)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.U2SecretMap other) {
        if (other == com.akaxin.proto.core.CoreProto.U2SecretMap.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getBase64Lng().isEmpty()) {
          base64Lng_ = other.base64Lng_;
          onChanged();
        }
        if (!other.getBase64Lat().isEmpty()) {
          base64Lat_ = other.base64Lat_;
          onChanged();
        }
        if (!other.getBase64TsKey().isEmpty()) {
          base64TsKey_ = other.base64TsKey_;
          onChanged();
        }
        if (!other.getToDeviceId().isEmpty()) {
          toDeviceId_ = other.toDeviceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.U2SecretMap parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.U2SecretMap) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64Lng_ = "";
      /**
       * <pre>
       *加密Base64经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public java.lang.String getBase64Lng() {
        java.lang.Object ref = base64Lng_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64Lng_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密Base64经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public com.google.protobuf.ByteString
          getBase64LngBytes() {
        java.lang.Object ref = base64Lng_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64Lng_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密Base64经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public Builder setBase64Lng(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64Lng_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密Base64经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public Builder clearBase64Lng() {
        
        base64Lng_ = getDefaultInstance().getBase64Lng();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密Base64经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public Builder setBase64LngBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64Lng_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64Lat_ = "";
      /**
       * <pre>
       *加密Base64纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public java.lang.String getBase64Lat() {
        java.lang.Object ref = base64Lat_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64Lat_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密Base64纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public com.google.protobuf.ByteString
          getBase64LatBytes() {
        java.lang.Object ref = base64Lat_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64Lat_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密Base64纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public Builder setBase64Lat(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64Lat_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密Base64纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public Builder clearBase64Lat() {
        
        base64Lat_ = getDefaultInstance().getBase64Lat();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密Base64纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public Builder setBase64LatBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64Lat_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64TsKey_ = "";
      /**
       * <pre>
       *Base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public java.lang.String getBase64TsKey() {
        java.lang.Object ref = base64TsKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64TsKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *Base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public com.google.protobuf.ByteString
          getBase64TsKeyBytes() {
        java.lang.Object ref = base64TsKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64TsKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *Base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public Builder setBase64TsKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64TsKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public Builder clearBase64TsKey() {
        
        base64TsKey_ = getDefaultInstance().getBase64TsKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *Base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public Builder setBase64TsKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64TsKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object toDeviceId_ = "";
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public java.lang.String getToDeviceId() {
        java.lang.Object ref = toDeviceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toDeviceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public com.google.protobuf.ByteString
          getToDeviceIdBytes() {
        java.lang.Object ref = toDeviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toDeviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public Builder setToDeviceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        toDeviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public Builder clearToDeviceId() {
        
        toDeviceId_ = getDefaultInstance().getToDeviceId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public Builder setToDeviceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        toDeviceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 8;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 8;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 8;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.U2SecretMap)
    }

    // @@protoc_insertion_point(class_scope:core.U2SecretMap)
    private static final com.akaxin.proto.core.CoreProto.U2SecretMap DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.U2SecretMap();
    }

    public static com.akaxin.proto.core.CoreProto.U2SecretMap getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<U2SecretMap>
        PARSER = new com.google.protobuf.AbstractParser<U2SecretMap>() {
      public U2SecretMap parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new U2SecretMap(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<U2SecretMap> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<U2SecretMap> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.U2SecretMap getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupMapOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupMap)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *to（群id）
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <pre>
     *to（群id）
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <pre>
     *经度
     * </pre>
     *
     * <code>string lng = 4;</code>
     */
    java.lang.String getLng();
    /**
     * <pre>
     *经度
     * </pre>
     *
     * <code>string lng = 4;</code>
     */
    com.google.protobuf.ByteString
        getLngBytes();

    /**
     * <pre>
     *纬度
     * </pre>
     *
     * <code>string lat = 5;</code>
     */
    java.lang.String getLat();
    /**
     * <pre>
     *纬度
     * </pre>
     *
     * <code>string lat = 5;</code>
     */
    com.google.protobuf.ByteString
        getLatBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 6;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *普通群地理位置消息
   * </pre>
   *
   * Protobuf type {@code core.GroupMap}
   */
  public  static final class GroupMap extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupMap)
      GroupMapOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupMap.newBuilder() to construct.
    private GroupMap(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupMap() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      lng_ = "";
      lat_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupMap(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              lng_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              lat_ = s;
              break;
            }
            case 48: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMap_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMap_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupMap.class, com.akaxin.proto.core.CoreProto.GroupMap.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <pre>
     *to（群id）
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *to（群id）
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LNG_FIELD_NUMBER = 4;
    private volatile java.lang.Object lng_;
    /**
     * <pre>
     *经度
     * </pre>
     *
     * <code>string lng = 4;</code>
     */
    public java.lang.String getLng() {
      java.lang.Object ref = lng_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        lng_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *经度
     * </pre>
     *
     * <code>string lng = 4;</code>
     */
    public com.google.protobuf.ByteString
        getLngBytes() {
      java.lang.Object ref = lng_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lng_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LAT_FIELD_NUMBER = 5;
    private volatile java.lang.Object lat_;
    /**
     * <pre>
     *纬度
     * </pre>
     *
     * <code>string lat = 5;</code>
     */
    public java.lang.String getLat() {
      java.lang.Object ref = lat_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        lat_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *纬度
     * </pre>
     *
     * <code>string lat = 5;</code>
     */
    public com.google.protobuf.ByteString
        getLatBytes() {
      java.lang.Object ref = lat_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lat_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 6;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 6;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getLngBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, lng_);
      }
      if (!getLatBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, lat_);
      }
      if (time_ != 0L) {
        output.writeInt64(6, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getLngBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, lng_);
      }
      if (!getLatBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, lat_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupMap)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupMap other = (com.akaxin.proto.core.CoreProto.GroupMap) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getLng()
          .equals(other.getLng());
      result = result && getLat()
          .equals(other.getLat());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + LNG_FIELD_NUMBER;
      hash = (53 * hash) + getLng().hashCode();
      hash = (37 * hash) + LAT_FIELD_NUMBER;
      hash = (53 * hash) + getLat().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMap parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupMap prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *普通群地理位置消息
     * </pre>
     *
     * Protobuf type {@code core.GroupMap}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupMap)
        com.akaxin.proto.core.CoreProto.GroupMapOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMap_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMap_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupMap.class, com.akaxin.proto.core.CoreProto.GroupMap.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupMap.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        lng_ = "";

        lat_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMap_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupMap getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupMap.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupMap build() {
        com.akaxin.proto.core.CoreProto.GroupMap result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupMap buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupMap result = new com.akaxin.proto.core.CoreProto.GroupMap(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.lng_ = lng_;
        result.lat_ = lat_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupMap) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupMap)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupMap other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupMap.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getLng().isEmpty()) {
          lng_ = other.lng_;
          onChanged();
        }
        if (!other.getLat().isEmpty()) {
          lat_ = other.lat_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupMap parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupMap) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <pre>
       *to（群id）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *to（群id）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *to（群id）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to（群id）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to（群id）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object lng_ = "";
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public java.lang.String getLng() {
        java.lang.Object ref = lng_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          lng_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public com.google.protobuf.ByteString
          getLngBytes() {
        java.lang.Object ref = lng_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lng_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public Builder setLng(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        lng_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public Builder clearLng() {
        
        lng_ = getDefaultInstance().getLng();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>string lng = 4;</code>
       */
      public Builder setLngBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        lng_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object lat_ = "";
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public java.lang.String getLat() {
        java.lang.Object ref = lat_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          lat_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public com.google.protobuf.ByteString
          getLatBytes() {
        java.lang.Object ref = lat_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lat_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public Builder setLat(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        lat_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public Builder clearLat() {
        
        lat_ = getDefaultInstance().getLat();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *纬度
       * </pre>
       *
       * <code>string lat = 5;</code>
       */
      public Builder setLatBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        lat_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 6;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 6;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 6;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupMap)
    }

    // @@protoc_insertion_point(class_scope:core.GroupMap)
    private static final com.akaxin.proto.core.CoreProto.GroupMap DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupMap();
    }

    public static com.akaxin.proto.core.CoreProto.GroupMap getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupMap>
        PARSER = new com.google.protobuf.AbstractParser<GroupMap>() {
      public GroupMap parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupMap(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupMap> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupMap> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupMap getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupSecretMapOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupSecretMap)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *to（群ID）
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <pre>
     *to（群ID）
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <pre>
     *加密经度
     * </pre>
     *
     * <code>string base64_lng = 4;</code>
     */
    java.lang.String getBase64Lng();
    /**
     * <pre>
     *加密经度
     * </pre>
     *
     * <code>string base64_lng = 4;</code>
     */
    com.google.protobuf.ByteString
        getBase64LngBytes();

    /**
     * <pre>
     *加密纬度
     * </pre>
     *
     * <code>string base64_lat = 5;</code>
     */
    java.lang.String getBase64Lat();
    /**
     * <pre>
     *加密纬度
     * </pre>
     *
     * <code>string base64_lat = 5;</code>
     */
    com.google.protobuf.ByteString
        getBase64LatBytes();

    /**
     * <pre>
     *base64的加密key，用于AES加密使用
     * </pre>
     *
     * <code>string base64_ts_key = 6;</code>
     */
    java.lang.String getBase64TsKey();
    /**
     * <pre>
     *base64的加密key，用于AES加密使用
     * </pre>
     *
     * <code>string base64_ts_key = 6;</code>
     */
    com.google.protobuf.ByteString
        getBase64TsKeyBytes();

    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 7;</code>
     */
    java.lang.String getToDeviceId();
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 7;</code>
     */
    com.google.protobuf.ByteString
        getToDeviceIdBytes();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 8;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *加密群地理位置消息
   * </pre>
   *
   * Protobuf type {@code core.GroupSecretMap}
   */
  public  static final class GroupSecretMap extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupSecretMap)
      GroupSecretMapOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupSecretMap.newBuilder() to construct.
    private GroupSecretMap(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupSecretMap() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      base64Lng_ = "";
      base64Lat_ = "";
      base64TsKey_ = "";
      toDeviceId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupSecretMap(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              base64Lng_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              base64Lat_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              base64TsKey_ = s;
              break;
            }
            case 58: {
              java.lang.String s = input.readStringRequireUtf8();

              toDeviceId_ = s;
              break;
            }
            case 64: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretMap_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretMap_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupSecretMap.class, com.akaxin.proto.core.CoreProto.GroupSecretMap.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息id
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <pre>
     *to（群ID）
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *to（群ID）
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_LNG_FIELD_NUMBER = 4;
    private volatile java.lang.Object base64Lng_;
    /**
     * <pre>
     *加密经度
     * </pre>
     *
     * <code>string base64_lng = 4;</code>
     */
    public java.lang.String getBase64Lng() {
      java.lang.Object ref = base64Lng_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64Lng_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密经度
     * </pre>
     *
     * <code>string base64_lng = 4;</code>
     */
    public com.google.protobuf.ByteString
        getBase64LngBytes() {
      java.lang.Object ref = base64Lng_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64Lng_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_LAT_FIELD_NUMBER = 5;
    private volatile java.lang.Object base64Lat_;
    /**
     * <pre>
     *加密纬度
     * </pre>
     *
     * <code>string base64_lat = 5;</code>
     */
    public java.lang.String getBase64Lat() {
      java.lang.Object ref = base64Lat_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64Lat_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *加密纬度
     * </pre>
     *
     * <code>string base64_lat = 5;</code>
     */
    public com.google.protobuf.ByteString
        getBase64LatBytes() {
      java.lang.Object ref = base64Lat_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64Lat_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE64_TS_KEY_FIELD_NUMBER = 6;
    private volatile java.lang.Object base64TsKey_;
    /**
     * <pre>
     *base64的加密key，用于AES加密使用
     * </pre>
     *
     * <code>string base64_ts_key = 6;</code>
     */
    public java.lang.String getBase64TsKey() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        base64TsKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *base64的加密key，用于AES加密使用
     * </pre>
     *
     * <code>string base64_ts_key = 6;</code>
     */
    public com.google.protobuf.ByteString
        getBase64TsKeyBytes() {
      java.lang.Object ref = base64TsKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        base64TsKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_DEVICE_ID_FIELD_NUMBER = 7;
    private volatile java.lang.Object toDeviceId_;
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 7;</code>
     */
    public java.lang.String getToDeviceId() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        toDeviceId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *接受者的设备ID
     * </pre>
     *
     * <code>string to_device_id = 7;</code>
     */
    public com.google.protobuf.ByteString
        getToDeviceIdBytes() {
      java.lang.Object ref = toDeviceId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toDeviceId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 8;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 8;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getBase64LngBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, base64Lng_);
      }
      if (!getBase64LatBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, base64Lat_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, toDeviceId_);
      }
      if (time_ != 0L) {
        output.writeInt64(8, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getBase64LngBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, base64Lng_);
      }
      if (!getBase64LatBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, base64Lat_);
      }
      if (!getBase64TsKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, base64TsKey_);
      }
      if (!getToDeviceIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, toDeviceId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupSecretMap)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupSecretMap other = (com.akaxin.proto.core.CoreProto.GroupSecretMap) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getBase64Lng()
          .equals(other.getBase64Lng());
      result = result && getBase64Lat()
          .equals(other.getBase64Lat());
      result = result && getBase64TsKey()
          .equals(other.getBase64TsKey());
      result = result && getToDeviceId()
          .equals(other.getToDeviceId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + BASE64_LNG_FIELD_NUMBER;
      hash = (53 * hash) + getBase64Lng().hashCode();
      hash = (37 * hash) + BASE64_LAT_FIELD_NUMBER;
      hash = (53 * hash) + getBase64Lat().hashCode();
      hash = (37 * hash) + BASE64_TS_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getBase64TsKey().hashCode();
      hash = (37 * hash) + TO_DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getToDeviceId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupSecretMap parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupSecretMap prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *加密群地理位置消息
     * </pre>
     *
     * Protobuf type {@code core.GroupSecretMap}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupSecretMap)
        com.akaxin.proto.core.CoreProto.GroupSecretMapOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretMap_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretMap_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupSecretMap.class, com.akaxin.proto.core.CoreProto.GroupSecretMap.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupSecretMap.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        base64Lng_ = "";

        base64Lat_ = "";

        base64TsKey_ = "";

        toDeviceId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupSecretMap_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretMap getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupSecretMap.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretMap build() {
        com.akaxin.proto.core.CoreProto.GroupSecretMap result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupSecretMap buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupSecretMap result = new com.akaxin.proto.core.CoreProto.GroupSecretMap(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.base64Lng_ = base64Lng_;
        result.base64Lat_ = base64Lat_;
        result.base64TsKey_ = base64TsKey_;
        result.toDeviceId_ = toDeviceId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupSecretMap) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupSecretMap)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupSecretMap other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupSecretMap.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getBase64Lng().isEmpty()) {
          base64Lng_ = other.base64Lng_;
          onChanged();
        }
        if (!other.getBase64Lat().isEmpty()) {
          base64Lat_ = other.base64Lat_;
          onChanged();
        }
        if (!other.getBase64TsKey().isEmpty()) {
          base64TsKey_ = other.base64TsKey_;
          onChanged();
        }
        if (!other.getToDeviceId().isEmpty()) {
          toDeviceId_ = other.toDeviceId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupSecretMap parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupSecretMap) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息id
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <pre>
       *to（群ID）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *to（群ID）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *to（群ID）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to（群ID）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to（群ID）
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64Lng_ = "";
      /**
       * <pre>
       *加密经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public java.lang.String getBase64Lng() {
        java.lang.Object ref = base64Lng_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64Lng_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public com.google.protobuf.ByteString
          getBase64LngBytes() {
        java.lang.Object ref = base64Lng_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64Lng_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public Builder setBase64Lng(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64Lng_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public Builder clearBase64Lng() {
        
        base64Lng_ = getDefaultInstance().getBase64Lng();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密经度
       * </pre>
       *
       * <code>string base64_lng = 4;</code>
       */
      public Builder setBase64LngBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64Lng_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64Lat_ = "";
      /**
       * <pre>
       *加密纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public java.lang.String getBase64Lat() {
        java.lang.Object ref = base64Lat_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64Lat_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *加密纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public com.google.protobuf.ByteString
          getBase64LatBytes() {
        java.lang.Object ref = base64Lat_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64Lat_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *加密纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public Builder setBase64Lat(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64Lat_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public Builder clearBase64Lat() {
        
        base64Lat_ = getDefaultInstance().getBase64Lat();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *加密纬度
       * </pre>
       *
       * <code>string base64_lat = 5;</code>
       */
      public Builder setBase64LatBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64Lat_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object base64TsKey_ = "";
      /**
       * <pre>
       *base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public java.lang.String getBase64TsKey() {
        java.lang.Object ref = base64TsKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          base64TsKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public com.google.protobuf.ByteString
          getBase64TsKeyBytes() {
        java.lang.Object ref = base64TsKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          base64TsKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public Builder setBase64TsKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        base64TsKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public Builder clearBase64TsKey() {
        
        base64TsKey_ = getDefaultInstance().getBase64TsKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *base64的加密key，用于AES加密使用
       * </pre>
       *
       * <code>string base64_ts_key = 6;</code>
       */
      public Builder setBase64TsKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        base64TsKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object toDeviceId_ = "";
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public java.lang.String getToDeviceId() {
        java.lang.Object ref = toDeviceId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toDeviceId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public com.google.protobuf.ByteString
          getToDeviceIdBytes() {
        java.lang.Object ref = toDeviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toDeviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public Builder setToDeviceId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        toDeviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public Builder clearToDeviceId() {
        
        toDeviceId_ = getDefaultInstance().getToDeviceId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *接受者的设备ID
       * </pre>
       *
       * <code>string to_device_id = 7;</code>
       */
      public Builder setToDeviceIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        toDeviceId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 8;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 8;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 8;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupSecretMap)
    }

    // @@protoc_insertion_point(class_scope:core.GroupSecretMap)
    private static final com.akaxin.proto.core.CoreProto.GroupSecretMap DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupSecretMap();
    }

    public static com.akaxin.proto.core.CoreProto.GroupSecretMap getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupSecretMap>
        PARSER = new com.google.protobuf.AbstractParser<GroupSecretMap>() {
      public GroupSecretMap parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupSecretMap(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupSecretMap> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupSecretMap> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupSecretMap getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface U2MsgNoticeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.U2MsgNotice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *通知可能的发送方
     * </pre>
     *
     * <code>string site_user_id = 1;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *通知可能的发送方
     * </pre>
     *
     * <code>string site_user_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *消息的接收方
     * </pre>
     *
     * <code>string site_friend_id = 2;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <pre>
     *消息的接收方
     * </pre>
     *
     * <code>string site_friend_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <pre>
     *消息通知内容
     * </pre>
     *
     * <code>bytes text = 3;</code>
     */
    com.google.protobuf.ByteString getText();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 4;</code>
     */
    long getTime();

    /**
     * <pre>
     *通知消息id
     * </pre>
     *
     * <code>string msg_id = 5;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *通知消息id
     * </pre>
     *
     * <code>string msg_id = 5;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();
  }
  /**
   * <pre>
   *消息通知：二人消息文本通知消息
   * </pre>
   *
   * Protobuf type {@code core.U2MsgNotice}
   */
  public  static final class U2MsgNotice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.U2MsgNotice)
      U2MsgNoticeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use U2MsgNotice.newBuilder() to construct.
    private U2MsgNotice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private U2MsgNotice() {
      siteUserId_ = "";
      siteFriendId_ = "";
      text_ = com.google.protobuf.ByteString.EMPTY;
      time_ = 0L;
      msgId_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private U2MsgNotice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 26: {

              text_ = input.readBytes();
              break;
            }
            case 32: {

              time_ = input.readInt64();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2MsgNotice_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2MsgNotice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.U2MsgNotice.class, com.akaxin.proto.core.CoreProto.U2MsgNotice.Builder.class);
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *通知可能的发送方
     * </pre>
     *
     * <code>string site_user_id = 1;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *通知可能的发送方
     * </pre>
     *
     * <code>string site_user_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <pre>
     *消息的接收方
     * </pre>
     *
     * <code>string site_friend_id = 2;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息的接收方
     * </pre>
     *
     * <code>string site_friend_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEXT_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString text_;
    /**
     * <pre>
     *消息通知内容
     * </pre>
     *
     * <code>bytes text = 3;</code>
     */
    public com.google.protobuf.ByteString getText() {
      return text_;
    }

    public static final int TIME_FIELD_NUMBER = 4;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 4;</code>
     */
    public long getTime() {
      return time_;
    }

    public static final int MSG_ID_FIELD_NUMBER = 5;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *通知消息id
     * </pre>
     *
     * <code>string msg_id = 5;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *通知消息id
     * </pre>
     *
     * <code>string msg_id = 5;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteFriendId_);
      }
      if (!text_.isEmpty()) {
        output.writeBytes(3, text_);
      }
      if (time_ != 0L) {
        output.writeInt64(4, time_);
      }
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, msgId_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteFriendId_);
      }
      if (!text_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, text_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, time_);
      }
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, msgId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.U2MsgNotice)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.U2MsgNotice other = (com.akaxin.proto.core.CoreProto.U2MsgNotice) obj;

      boolean result = true;
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getText()
          .equals(other.getText());
      result = result && (getTime()
          == other.getTime());
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2MsgNotice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.U2MsgNotice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *消息通知：二人消息文本通知消息
     * </pre>
     *
     * Protobuf type {@code core.U2MsgNotice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.U2MsgNotice)
        com.akaxin.proto.core.CoreProto.U2MsgNoticeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2MsgNotice_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2MsgNotice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.U2MsgNotice.class, com.akaxin.proto.core.CoreProto.U2MsgNotice.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.U2MsgNotice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        siteUserId_ = "";

        siteFriendId_ = "";

        text_ = com.google.protobuf.ByteString.EMPTY;

        time_ = 0L;

        msgId_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2MsgNotice_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.U2MsgNotice getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.U2MsgNotice.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.U2MsgNotice build() {
        com.akaxin.proto.core.CoreProto.U2MsgNotice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.U2MsgNotice buildPartial() {
        com.akaxin.proto.core.CoreProto.U2MsgNotice result = new com.akaxin.proto.core.CoreProto.U2MsgNotice(this);
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.text_ = text_;
        result.time_ = time_;
        result.msgId_ = msgId_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.U2MsgNotice) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.U2MsgNotice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.U2MsgNotice other) {
        if (other == com.akaxin.proto.core.CoreProto.U2MsgNotice.getDefaultInstance()) return this;
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (other.getText() != com.google.protobuf.ByteString.EMPTY) {
          setText(other.getText());
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.U2MsgNotice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.U2MsgNotice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *通知可能的发送方
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *通知可能的发送方
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *通知可能的发送方
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知可能的发送方
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知可能的发送方
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <pre>
       *消息的接收方
       * </pre>
       *
       * <code>string site_friend_id = 2;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息的接收方
       * </pre>
       *
       * <code>string site_friend_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息的接收方
       * </pre>
       *
       * <code>string site_friend_id = 2;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息的接收方
       * </pre>
       *
       * <code>string site_friend_id = 2;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息的接收方
       * </pre>
       *
       * <code>string site_friend_id = 2;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString text_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *消息通知内容
       * </pre>
       *
       * <code>bytes text = 3;</code>
       */
      public com.google.protobuf.ByteString getText() {
        return text_;
      }
      /**
       * <pre>
       *消息通知内容
       * </pre>
       *
       * <code>bytes text = 3;</code>
       */
      public Builder setText(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息通知内容
       * </pre>
       *
       * <code>bytes text = 3;</code>
       */
      public Builder clearText() {
        
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 4;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 4;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 4;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.U2MsgNotice)
    }

    // @@protoc_insertion_point(class_scope:core.U2MsgNotice)
    private static final com.akaxin.proto.core.CoreProto.U2MsgNotice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.U2MsgNotice();
    }

    public static com.akaxin.proto.core.CoreProto.U2MsgNotice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<U2MsgNotice>
        PARSER = new com.google.protobuf.AbstractParser<U2MsgNotice>() {
      public U2MsgNotice parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new U2MsgNotice(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<U2MsgNotice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<U2MsgNotice> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.U2MsgNotice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupMsgNoticeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupMsgNotice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *通知发送者
     * </pre>
     *
     * <code>string site_user_id = 1;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *通知发送者
     * </pre>
     *
     * <code>string site_user_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *群组ID
     * </pre>
     *
     * <code>string site_group_id = 2;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <pre>
     *群组ID
     * </pre>
     *
     * <code>string site_group_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <pre>
     *通知消息
     * </pre>
     *
     * <code>bytes text = 3;</code>
     */
    com.google.protobuf.ByteString getText();

    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 4;</code>
     */
    long getTime();

    /**
     * <pre>
     *通知消息id
     * </pre>
     *
     * <code>string msg_id = 5;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *通知消息id
     * </pre>
     *
     * <code>string msg_id = 5;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();
  }
  /**
   * <pre>
   *消息通知：群组消息文本通知消息
   * </pre>
   *
   * Protobuf type {@code core.GroupMsgNotice}
   */
  public  static final class GroupMsgNotice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupMsgNotice)
      GroupMsgNoticeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupMsgNotice.newBuilder() to construct.
    private GroupMsgNotice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupMsgNotice() {
      siteUserId_ = "";
      siteGroupId_ = "";
      text_ = com.google.protobuf.ByteString.EMPTY;
      time_ = 0L;
      msgId_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupMsgNotice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 26: {

              text_ = input.readBytes();
              break;
            }
            case 32: {

              time_ = input.readInt64();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMsgNotice_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMsgNotice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupMsgNotice.class, com.akaxin.proto.core.CoreProto.GroupMsgNotice.Builder.class);
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *通知发送者
     * </pre>
     *
     * <code>string site_user_id = 1;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *通知发送者
     * </pre>
     *
     * <code>string site_user_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <pre>
     *群组ID
     * </pre>
     *
     * <code>string site_group_id = 2;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *群组ID
     * </pre>
     *
     * <code>string site_group_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEXT_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString text_;
    /**
     * <pre>
     *通知消息
     * </pre>
     *
     * <code>bytes text = 3;</code>
     */
    public com.google.protobuf.ByteString getText() {
      return text_;
    }

    public static final int TIME_FIELD_NUMBER = 4;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms
     * </pre>
     *
     * <code>int64 time = 4;</code>
     */
    public long getTime() {
      return time_;
    }

    public static final int MSG_ID_FIELD_NUMBER = 5;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *通知消息id
     * </pre>
     *
     * <code>string msg_id = 5;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *通知消息id
     * </pre>
     *
     * <code>string msg_id = 5;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteGroupId_);
      }
      if (!text_.isEmpty()) {
        output.writeBytes(3, text_);
      }
      if (time_ != 0L) {
        output.writeInt64(4, time_);
      }
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, msgId_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteGroupId_);
      }
      if (!text_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, text_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, time_);
      }
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, msgId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupMsgNotice)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupMsgNotice other = (com.akaxin.proto.core.CoreProto.GroupMsgNotice) obj;

      boolean result = true;
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getText()
          .equals(other.getText());
      result = result && (getTime()
          == other.getTime());
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupMsgNotice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *消息通知：群组消息文本通知消息
     * </pre>
     *
     * Protobuf type {@code core.GroupMsgNotice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupMsgNotice)
        com.akaxin.proto.core.CoreProto.GroupMsgNoticeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMsgNotice_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMsgNotice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupMsgNotice.class, com.akaxin.proto.core.CoreProto.GroupMsgNotice.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupMsgNotice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        siteUserId_ = "";

        siteGroupId_ = "";

        text_ = com.google.protobuf.ByteString.EMPTY;

        time_ = 0L;

        msgId_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupMsgNotice_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupMsgNotice getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupMsgNotice.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupMsgNotice build() {
        com.akaxin.proto.core.CoreProto.GroupMsgNotice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupMsgNotice buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupMsgNotice result = new com.akaxin.proto.core.CoreProto.GroupMsgNotice(this);
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.text_ = text_;
        result.time_ = time_;
        result.msgId_ = msgId_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupMsgNotice) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupMsgNotice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupMsgNotice other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupMsgNotice.getDefaultInstance()) return this;
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (other.getText() != com.google.protobuf.ByteString.EMPTY) {
          setText(other.getText());
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupMsgNotice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupMsgNotice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *通知发送者
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *通知发送者
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *通知发送者
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知发送者
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知发送者
       * </pre>
       *
       * <code>string site_user_id = 1;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <pre>
       *群组ID
       * </pre>
       *
       * <code>string site_group_id = 2;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *群组ID
       * </pre>
       *
       * <code>string site_group_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *群组ID
       * </pre>
       *
       * <code>string site_group_id = 2;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *群组ID
       * </pre>
       *
       * <code>string site_group_id = 2;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *群组ID
       * </pre>
       *
       * <code>string site_group_id = 2;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString text_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *通知消息
       * </pre>
       *
       * <code>bytes text = 3;</code>
       */
      public com.google.protobuf.ByteString getText() {
        return text_;
      }
      /**
       * <pre>
       *通知消息
       * </pre>
       *
       * <code>bytes text = 3;</code>
       */
      public Builder setText(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知消息
       * </pre>
       *
       * <code>bytes text = 3;</code>
       */
      public Builder clearText() {
        
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 4;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 4;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms
       * </pre>
       *
       * <code>int64 time = 4;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *通知消息id
       * </pre>
       *
       * <code>string msg_id = 5;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupMsgNotice)
    }

    // @@protoc_insertion_point(class_scope:core.GroupMsgNotice)
    private static final com.akaxin.proto.core.CoreProto.GroupMsgNotice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupMsgNotice();
    }

    public static com.akaxin.proto.core.CoreProto.GroupMsgNotice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupMsgNotice>
        PARSER = new com.google.protobuf.AbstractParser<GroupMsgNotice>() {
      public GroupMsgNotice parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupMsgNotice(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupMsgNotice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupMsgNotice> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupMsgNotice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface U2RecallOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.U2Recall)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *撤回消息的ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *撤回消息的ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <pre>
     *撤回的消息ID
     * </pre>
     *
     * <code>string recall_msg_id = 4;</code>
     */
    java.lang.String getRecallMsgId();
    /**
     * <pre>
     *撤回的消息ID
     * </pre>
     *
     * <code>string recall_msg_id = 4;</code>
     */
    com.google.protobuf.ByteString
        getRecallMsgIdBytes();

    /**
     * <pre>
     *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *撤回的消息，不用入库
   * </pre>
   *
   * Protobuf type {@code core.U2Recall}
   */
  public  static final class U2Recall extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.U2Recall)
      U2RecallOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use U2Recall.newBuilder() to construct.
    private U2Recall(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private U2Recall() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      recallMsgId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private U2Recall(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              recallMsgId_ = s;
              break;
            }
            case 40: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2Recall_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2Recall_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.U2Recall.class, com.akaxin.proto.core.CoreProto.U2Recall.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *撤回消息的ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *撤回消息的ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RECALL_MSG_ID_FIELD_NUMBER = 4;
    private volatile java.lang.Object recallMsgId_;
    /**
     * <pre>
     *撤回的消息ID
     * </pre>
     *
     * <code>string recall_msg_id = 4;</code>
     */
    public java.lang.String getRecallMsgId() {
      java.lang.Object ref = recallMsgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        recallMsgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *撤回的消息ID
     * </pre>
     *
     * <code>string recall_msg_id = 4;</code>
     */
    public com.google.protobuf.ByteString
        getRecallMsgIdBytes() {
      java.lang.Object ref = recallMsgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        recallMsgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 5;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getRecallMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, recallMsgId_);
      }
      if (time_ != 0L) {
        output.writeInt64(5, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getRecallMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, recallMsgId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.U2Recall)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.U2Recall other = (com.akaxin.proto.core.CoreProto.U2Recall) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getRecallMsgId()
          .equals(other.getRecallMsgId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + RECALL_MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRecallMsgId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Recall parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.U2Recall prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *撤回的消息，不用入库
     * </pre>
     *
     * Protobuf type {@code core.U2Recall}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.U2Recall)
        com.akaxin.proto.core.CoreProto.U2RecallOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Recall_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Recall_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.U2Recall.class, com.akaxin.proto.core.CoreProto.U2Recall.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.U2Recall.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        recallMsgId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Recall_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.U2Recall getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.U2Recall.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.U2Recall build() {
        com.akaxin.proto.core.CoreProto.U2Recall result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.U2Recall buildPartial() {
        com.akaxin.proto.core.CoreProto.U2Recall result = new com.akaxin.proto.core.CoreProto.U2Recall(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.recallMsgId_ = recallMsgId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.U2Recall) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.U2Recall)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.U2Recall other) {
        if (other == com.akaxin.proto.core.CoreProto.U2Recall.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getRecallMsgId().isEmpty()) {
          recallMsgId_ = other.recallMsgId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.U2Recall parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.U2Recall) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object recallMsgId_ = "";
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public java.lang.String getRecallMsgId() {
        java.lang.Object ref = recallMsgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          recallMsgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public com.google.protobuf.ByteString
          getRecallMsgIdBytes() {
        java.lang.Object ref = recallMsgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          recallMsgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public Builder setRecallMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        recallMsgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public Builder clearRecallMsgId() {
        
        recallMsgId_ = getDefaultInstance().getRecallMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public Builder setRecallMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        recallMsgId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.U2Recall)
    }

    // @@protoc_insertion_point(class_scope:core.U2Recall)
    private static final com.akaxin.proto.core.CoreProto.U2Recall DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.U2Recall();
    }

    public static com.akaxin.proto.core.CoreProto.U2Recall getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<U2Recall>
        PARSER = new com.google.protobuf.AbstractParser<U2Recall>() {
      public U2Recall parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new U2Recall(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<U2Recall> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<U2Recall> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.U2Recall getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupRecallOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupRecall)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *撤回消息的ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *撤回消息的ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <pre>
     *撤回的消息ID
     * </pre>
     *
     * <code>string recall_msg_id = 4;</code>
     */
    java.lang.String getRecallMsgId();
    /**
     * <pre>
     *撤回的消息ID
     * </pre>
     *
     * <code>string recall_msg_id = 4;</code>
     */
    com.google.protobuf.ByteString
        getRecallMsgIdBytes();

    /**
     * <pre>
     *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    long getTime();
  }
  /**
   * <pre>
   *撤回的消息，不用入库
   * </pre>
   *
   * Protobuf type {@code core.GroupRecall}
   */
  public  static final class GroupRecall extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupRecall)
      GroupRecallOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupRecall.newBuilder() to construct.
    private GroupRecall(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupRecall() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      recallMsgId_ = "";
      time_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupRecall(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              recallMsgId_ = s;
              break;
            }
            case 40: {

              time_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupRecall_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupRecall_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupRecall.class, com.akaxin.proto.core.CoreProto.GroupRecall.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *撤回消息的ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *撤回消息的ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RECALL_MSG_ID_FIELD_NUMBER = 4;
    private volatile java.lang.Object recallMsgId_;
    /**
     * <pre>
     *撤回的消息ID
     * </pre>
     *
     * <code>string recall_msg_id = 4;</code>
     */
    public java.lang.String getRecallMsgId() {
      java.lang.Object ref = recallMsgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        recallMsgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *撤回的消息ID
     * </pre>
     *
     * <code>string recall_msg_id = 4;</code>
     */
    public com.google.protobuf.ByteString
        getRecallMsgIdBytes() {
      java.lang.Object ref = recallMsgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        recallMsgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 5;
    private long time_;
    /**
     * <pre>
     *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    public long getTime() {
      return time_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getRecallMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, recallMsgId_);
      }
      if (time_ != 0L) {
        output.writeInt64(5, time_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getRecallMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, recallMsgId_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, time_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupRecall)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupRecall other = (com.akaxin.proto.core.CoreProto.GroupRecall) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getRecallMsgId()
          .equals(other.getRecallMsgId());
      result = result && (getTime()
          == other.getTime());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + RECALL_MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRecallMsgId().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupRecall parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupRecall prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *撤回的消息，不用入库
     * </pre>
     *
     * Protobuf type {@code core.GroupRecall}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupRecall)
        com.akaxin.proto.core.CoreProto.GroupRecallOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupRecall_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupRecall_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupRecall.class, com.akaxin.proto.core.CoreProto.GroupRecall.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupRecall.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        recallMsgId_ = "";

        time_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupRecall_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupRecall getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupRecall.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupRecall build() {
        com.akaxin.proto.core.CoreProto.GroupRecall result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupRecall buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupRecall result = new com.akaxin.proto.core.CoreProto.GroupRecall(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.recallMsgId_ = recallMsgId_;
        result.time_ = time_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupRecall) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupRecall)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupRecall other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupRecall.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getRecallMsgId().isEmpty()) {
          recallMsgId_ = other.recallMsgId_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupRecall parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupRecall) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *撤回消息的ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object recallMsgId_ = "";
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public java.lang.String getRecallMsgId() {
        java.lang.Object ref = recallMsgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          recallMsgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public com.google.protobuf.ByteString
          getRecallMsgIdBytes() {
        java.lang.Object ref = recallMsgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          recallMsgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public Builder setRecallMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        recallMsgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public Builder clearRecallMsgId() {
        
        recallMsgId_ = getDefaultInstance().getRecallMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *撤回的消息ID
       * </pre>
       *
       * <code>string recall_msg_id = 4;</code>
       */
      public Builder setRecallMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        recallMsgId_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间，单位ms,（撤回消息客户端需要判断是否超过2minutes）
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupRecall)
    }

    // @@protoc_insertion_point(class_scope:core.GroupRecall)
    private static final com.akaxin.proto.core.CoreProto.GroupRecall DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupRecall();
    }

    public static com.akaxin.proto.core.CoreProto.GroupRecall getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupRecall>
        PARSER = new com.google.protobuf.AbstractParser<GroupRecall>() {
      public GroupRecall parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupRecall(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupRecall> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupRecall> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupRecall getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface U2WebOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.U2Web)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    java.lang.String getWebCode();
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    com.google.protobuf.ByteString
        getWebCodeBytes();

    /**
     * <pre>
     *web消息的宽度
     * </pre>
     *
     * <code>int32 width = 5;</code>
     */
    int getWidth();

    /**
     * <pre>
     *web消息的高度
     * </pre>
     *
     * <code>int32 height = 6;</code>
     */
    int getHeight();

    /**
     * <pre>
     *消息时间
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();

    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 8;</code>
     */
    java.lang.String getHrefUrl();
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 8;</code>
     */
    com.google.protobuf.ByteString
        getHrefUrlBytes();
  }
  /**
   * <pre>
   *二人：内嵌web类型消息
   * </pre>
   *
   * Protobuf type {@code core.U2Web}
   */
  public  static final class U2Web extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.U2Web)
      U2WebOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use U2Web.newBuilder() to construct.
    private U2Web(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private U2Web() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      webCode_ = "";
      width_ = 0;
      height_ = 0;
      time_ = 0L;
      hrefUrl_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private U2Web(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              webCode_ = s;
              break;
            }
            case 40: {

              width_ = input.readInt32();
              break;
            }
            case 48: {

              height_ = input.readInt32();
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
            case 66: {
              java.lang.String s = input.readStringRequireUtf8();

              hrefUrl_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2Web_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2Web_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.U2Web.class, com.akaxin.proto.core.CoreProto.U2Web.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WEB_CODE_FIELD_NUMBER = 4;
    private volatile java.lang.Object webCode_;
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    public java.lang.String getWebCode() {
      java.lang.Object ref = webCode_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        webCode_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    public com.google.protobuf.ByteString
        getWebCodeBytes() {
      java.lang.Object ref = webCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        webCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WIDTH_FIELD_NUMBER = 5;
    private int width_;
    /**
     * <pre>
     *web消息的宽度
     * </pre>
     *
     * <code>int32 width = 5;</code>
     */
    public int getWidth() {
      return width_;
    }

    public static final int HEIGHT_FIELD_NUMBER = 6;
    private int height_;
    /**
     * <pre>
     *web消息的高度
     * </pre>
     *
     * <code>int32 height = 6;</code>
     */
    public int getHeight() {
      return height_;
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    public static final int HREF_URL_FIELD_NUMBER = 8;
    private volatile java.lang.Object hrefUrl_;
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 8;</code>
     */
    public java.lang.String getHrefUrl() {
      java.lang.Object ref = hrefUrl_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        hrefUrl_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 8;</code>
     */
    public com.google.protobuf.ByteString
        getHrefUrlBytes() {
      java.lang.Object ref = hrefUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hrefUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getWebCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, webCode_);
      }
      if (width_ != 0) {
        output.writeInt32(5, width_);
      }
      if (height_ != 0) {
        output.writeInt32(6, height_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      if (!getHrefUrlBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, hrefUrl_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getWebCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, webCode_);
      }
      if (width_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, width_);
      }
      if (height_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, height_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      if (!getHrefUrlBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, hrefUrl_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.U2Web)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.U2Web other = (com.akaxin.proto.core.CoreProto.U2Web) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getWebCode()
          .equals(other.getWebCode());
      result = result && (getWidth()
          == other.getWidth());
      result = result && (getHeight()
          == other.getHeight());
      result = result && (getTime()
          == other.getTime());
      result = result && getHrefUrl()
          .equals(other.getHrefUrl());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + WEB_CODE_FIELD_NUMBER;
      hash = (53 * hash) + getWebCode().hashCode();
      hash = (37 * hash) + WIDTH_FIELD_NUMBER;
      hash = (53 * hash) + getWidth();
      hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + getHeight();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (37 * hash) + HREF_URL_FIELD_NUMBER;
      hash = (53 * hash) + getHrefUrl().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2Web parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.U2Web prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *二人：内嵌web类型消息
     * </pre>
     *
     * Protobuf type {@code core.U2Web}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.U2Web)
        com.akaxin.proto.core.CoreProto.U2WebOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Web_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Web_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.U2Web.class, com.akaxin.proto.core.CoreProto.U2Web.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.U2Web.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        webCode_ = "";

        width_ = 0;

        height_ = 0;

        time_ = 0L;

        hrefUrl_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2Web_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.U2Web getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.U2Web.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.U2Web build() {
        com.akaxin.proto.core.CoreProto.U2Web result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.U2Web buildPartial() {
        com.akaxin.proto.core.CoreProto.U2Web result = new com.akaxin.proto.core.CoreProto.U2Web(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.webCode_ = webCode_;
        result.width_ = width_;
        result.height_ = height_;
        result.time_ = time_;
        result.hrefUrl_ = hrefUrl_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.U2Web) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.U2Web)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.U2Web other) {
        if (other == com.akaxin.proto.core.CoreProto.U2Web.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getWebCode().isEmpty()) {
          webCode_ = other.webCode_;
          onChanged();
        }
        if (other.getWidth() != 0) {
          setWidth(other.getWidth());
        }
        if (other.getHeight() != 0) {
          setHeight(other.getHeight());
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        if (!other.getHrefUrl().isEmpty()) {
          hrefUrl_ = other.hrefUrl_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.U2Web parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.U2Web) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object webCode_ = "";
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public java.lang.String getWebCode() {
        java.lang.Object ref = webCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          webCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public com.google.protobuf.ByteString
          getWebCodeBytes() {
        java.lang.Object ref = webCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          webCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder setWebCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        webCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder clearWebCode() {
        
        webCode_ = getDefaultInstance().getWebCode();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder setWebCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        webCode_ = value;
        onChanged();
        return this;
      }

      private int width_ ;
      /**
       * <pre>
       *web消息的宽度
       * </pre>
       *
       * <code>int32 width = 5;</code>
       */
      public int getWidth() {
        return width_;
      }
      /**
       * <pre>
       *web消息的宽度
       * </pre>
       *
       * <code>int32 width = 5;</code>
       */
      public Builder setWidth(int value) {
        
        width_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *web消息的宽度
       * </pre>
       *
       * <code>int32 width = 5;</code>
       */
      public Builder clearWidth() {
        
        width_ = 0;
        onChanged();
        return this;
      }

      private int height_ ;
      /**
       * <pre>
       *web消息的高度
       * </pre>
       *
       * <code>int32 height = 6;</code>
       */
      public int getHeight() {
        return height_;
      }
      /**
       * <pre>
       *web消息的高度
       * </pre>
       *
       * <code>int32 height = 6;</code>
       */
      public Builder setHeight(int value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *web消息的高度
       * </pre>
       *
       * <code>int32 height = 6;</code>
       */
      public Builder clearHeight() {
        
        height_ = 0;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object hrefUrl_ = "";
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public java.lang.String getHrefUrl() {
        java.lang.Object ref = hrefUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hrefUrl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public com.google.protobuf.ByteString
          getHrefUrlBytes() {
        java.lang.Object ref = hrefUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hrefUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public Builder setHrefUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        hrefUrl_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public Builder clearHrefUrl() {
        
        hrefUrl_ = getDefaultInstance().getHrefUrl();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public Builder setHrefUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        hrefUrl_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.U2Web)
    }

    // @@protoc_insertion_point(class_scope:core.U2Web)
    private static final com.akaxin.proto.core.CoreProto.U2Web DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.U2Web();
    }

    public static com.akaxin.proto.core.CoreProto.U2Web getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<U2Web>
        PARSER = new com.google.protobuf.AbstractParser<U2Web>() {
      public U2Web parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new U2Web(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<U2Web> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<U2Web> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.U2Web getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupWebOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupWeb)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *群ID(to)
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <pre>
     *群ID(to)
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    java.lang.String getWebCode();
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    com.google.protobuf.ByteString
        getWebCodeBytes();

    /**
     * <pre>
     *web消息的宽度
     * </pre>
     *
     * <code>int32 width = 5;</code>
     */
    int getWidth();

    /**
     * <pre>
     *web消息的高度
     * </pre>
     *
     * <code>int32 height = 6;</code>
     */
    int getHeight();

    /**
     * <pre>
     *消息时间
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    long getTime();

    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 8;</code>
     */
    java.lang.String getHrefUrl();
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 8;</code>
     */
    com.google.protobuf.ByteString
        getHrefUrlBytes();
  }
  /**
   * <pre>
   *群组：内嵌web类型消息
   * </pre>
   *
   * Protobuf type {@code core.GroupWeb}
   */
  public  static final class GroupWeb extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupWeb)
      GroupWebOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupWeb.newBuilder() to construct.
    private GroupWeb(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupWeb() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      webCode_ = "";
      width_ = 0;
      height_ = 0;
      time_ = 0L;
      hrefUrl_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupWeb(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              webCode_ = s;
              break;
            }
            case 40: {

              width_ = input.readInt32();
              break;
            }
            case 48: {

              height_ = input.readInt32();
              break;
            }
            case 56: {

              time_ = input.readInt64();
              break;
            }
            case 66: {
              java.lang.String s = input.readStringRequireUtf8();

              hrefUrl_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWeb_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWeb_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupWeb.class, com.akaxin.proto.core.CoreProto.GroupWeb.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <pre>
     *群ID(to)
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *群ID(to)
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WEB_CODE_FIELD_NUMBER = 4;
    private volatile java.lang.Object webCode_;
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    public java.lang.String getWebCode() {
      java.lang.Object ref = webCode_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        webCode_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    public com.google.protobuf.ByteString
        getWebCodeBytes() {
      java.lang.Object ref = webCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        webCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WIDTH_FIELD_NUMBER = 5;
    private int width_;
    /**
     * <pre>
     *web消息的宽度
     * </pre>
     *
     * <code>int32 width = 5;</code>
     */
    public int getWidth() {
      return width_;
    }

    public static final int HEIGHT_FIELD_NUMBER = 6;
    private int height_;
    /**
     * <pre>
     *web消息的高度
     * </pre>
     *
     * <code>int32 height = 6;</code>
     */
    public int getHeight() {
      return height_;
    }

    public static final int TIME_FIELD_NUMBER = 7;
    private long time_;
    /**
     * <pre>
     *消息时间
     * </pre>
     *
     * <code>int64 time = 7;</code>
     */
    public long getTime() {
      return time_;
    }

    public static final int HREF_URL_FIELD_NUMBER = 8;
    private volatile java.lang.Object hrefUrl_;
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 8;</code>
     */
    public java.lang.String getHrefUrl() {
      java.lang.Object ref = hrefUrl_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        hrefUrl_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 8;</code>
     */
    public com.google.protobuf.ByteString
        getHrefUrlBytes() {
      java.lang.Object ref = hrefUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hrefUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getWebCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, webCode_);
      }
      if (width_ != 0) {
        output.writeInt32(5, width_);
      }
      if (height_ != 0) {
        output.writeInt32(6, height_);
      }
      if (time_ != 0L) {
        output.writeInt64(7, time_);
      }
      if (!getHrefUrlBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, hrefUrl_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getWebCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, webCode_);
      }
      if (width_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, width_);
      }
      if (height_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, height_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, time_);
      }
      if (!getHrefUrlBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, hrefUrl_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupWeb)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupWeb other = (com.akaxin.proto.core.CoreProto.GroupWeb) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getWebCode()
          .equals(other.getWebCode());
      result = result && (getWidth()
          == other.getWidth());
      result = result && (getHeight()
          == other.getHeight());
      result = result && (getTime()
          == other.getTime());
      result = result && getHrefUrl()
          .equals(other.getHrefUrl());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + WEB_CODE_FIELD_NUMBER;
      hash = (53 * hash) + getWebCode().hashCode();
      hash = (37 * hash) + WIDTH_FIELD_NUMBER;
      hash = (53 * hash) + getWidth();
      hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + getHeight();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (37 * hash) + HREF_URL_FIELD_NUMBER;
      hash = (53 * hash) + getHrefUrl().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWeb parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupWeb prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *群组：内嵌web类型消息
     * </pre>
     *
     * Protobuf type {@code core.GroupWeb}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupWeb)
        com.akaxin.proto.core.CoreProto.GroupWebOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWeb_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWeb_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupWeb.class, com.akaxin.proto.core.CoreProto.GroupWeb.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupWeb.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        webCode_ = "";

        width_ = 0;

        height_ = 0;

        time_ = 0L;

        hrefUrl_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWeb_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupWeb getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupWeb.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupWeb build() {
        com.akaxin.proto.core.CoreProto.GroupWeb result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupWeb buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupWeb result = new com.akaxin.proto.core.CoreProto.GroupWeb(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.webCode_ = webCode_;
        result.width_ = width_;
        result.height_ = height_;
        result.time_ = time_;
        result.hrefUrl_ = hrefUrl_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupWeb) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupWeb)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupWeb other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupWeb.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getWebCode().isEmpty()) {
          webCode_ = other.webCode_;
          onChanged();
        }
        if (other.getWidth() != 0) {
          setWidth(other.getWidth());
        }
        if (other.getHeight() != 0) {
          setHeight(other.getHeight());
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        if (!other.getHrefUrl().isEmpty()) {
          hrefUrl_ = other.hrefUrl_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupWeb parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupWeb) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object webCode_ = "";
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public java.lang.String getWebCode() {
        java.lang.Object ref = webCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          webCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public com.google.protobuf.ByteString
          getWebCodeBytes() {
        java.lang.Object ref = webCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          webCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder setWebCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        webCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder clearWebCode() {
        
        webCode_ = getDefaultInstance().getWebCode();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder setWebCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        webCode_ = value;
        onChanged();
        return this;
      }

      private int width_ ;
      /**
       * <pre>
       *web消息的宽度
       * </pre>
       *
       * <code>int32 width = 5;</code>
       */
      public int getWidth() {
        return width_;
      }
      /**
       * <pre>
       *web消息的宽度
       * </pre>
       *
       * <code>int32 width = 5;</code>
       */
      public Builder setWidth(int value) {
        
        width_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *web消息的宽度
       * </pre>
       *
       * <code>int32 width = 5;</code>
       */
      public Builder clearWidth() {
        
        width_ = 0;
        onChanged();
        return this;
      }

      private int height_ ;
      /**
       * <pre>
       *web消息的高度
       * </pre>
       *
       * <code>int32 height = 6;</code>
       */
      public int getHeight() {
        return height_;
      }
      /**
       * <pre>
       *web消息的高度
       * </pre>
       *
       * <code>int32 height = 6;</code>
       */
      public Builder setHeight(int value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *web消息的高度
       * </pre>
       *
       * <code>int32 height = 6;</code>
       */
      public Builder clearHeight() {
        
        height_ = 0;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 7;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object hrefUrl_ = "";
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public java.lang.String getHrefUrl() {
        java.lang.Object ref = hrefUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hrefUrl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public com.google.protobuf.ByteString
          getHrefUrlBytes() {
        java.lang.Object ref = hrefUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hrefUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public Builder setHrefUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        hrefUrl_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public Builder clearHrefUrl() {
        
        hrefUrl_ = getDefaultInstance().getHrefUrl();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 8;</code>
       */
      public Builder setHrefUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        hrefUrl_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupWeb)
    }

    // @@protoc_insertion_point(class_scope:core.GroupWeb)
    private static final com.akaxin.proto.core.CoreProto.GroupWeb DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupWeb();
    }

    public static com.akaxin.proto.core.CoreProto.GroupWeb getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupWeb>
        PARSER = new com.google.protobuf.AbstractParser<GroupWeb>() {
      public GroupWeb parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupWeb(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupWeb> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupWeb> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupWeb getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface U2WebNoticeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.U2WebNotice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    java.lang.String getSiteFriendId();
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteFriendIdBytes();

    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    java.lang.String getWebCode();
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    com.google.protobuf.ByteString
        getWebCodeBytes();

    /**
     * <pre>
     *消息时间
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    long getTime();

    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 6;</code>
     */
    java.lang.String getHrefUrl();
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 6;</code>
     */
    com.google.protobuf.ByteString
        getHrefUrlBytes();

    /**
     * <pre>
     *web notice消息的高度
     * </pre>
     *
     * <code>int32 height = 7;</code>
     */
    int getHeight();
  }
  /**
   * <pre>
   *二人WEB通知：内嵌web通知消息
   * </pre>
   *
   * Protobuf type {@code core.U2WebNotice}
   */
  public  static final class U2WebNotice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.U2WebNotice)
      U2WebNoticeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use U2WebNotice.newBuilder() to construct.
    private U2WebNotice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private U2WebNotice() {
      msgId_ = "";
      siteUserId_ = "";
      siteFriendId_ = "";
      webCode_ = "";
      time_ = 0L;
      hrefUrl_ = "";
      height_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private U2WebNotice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteFriendId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              webCode_ = s;
              break;
            }
            case 40: {

              time_ = input.readInt64();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              hrefUrl_ = s;
              break;
            }
            case 56: {

              height_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2WebNotice_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_U2WebNotice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.U2WebNotice.class, com.akaxin.proto.core.CoreProto.U2WebNotice.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_FRIEND_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteFriendId_;
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    public java.lang.String getSiteFriendId() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteFriendId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *to
     * </pre>
     *
     * <code>string site_friend_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteFriendIdBytes() {
      java.lang.Object ref = siteFriendId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteFriendId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WEB_CODE_FIELD_NUMBER = 4;
    private volatile java.lang.Object webCode_;
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    public java.lang.String getWebCode() {
      java.lang.Object ref = webCode_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        webCode_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    public com.google.protobuf.ByteString
        getWebCodeBytes() {
      java.lang.Object ref = webCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        webCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 5;
    private long time_;
    /**
     * <pre>
     *消息时间
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    public long getTime() {
      return time_;
    }

    public static final int HREF_URL_FIELD_NUMBER = 6;
    private volatile java.lang.Object hrefUrl_;
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 6;</code>
     */
    public java.lang.String getHrefUrl() {
      java.lang.Object ref = hrefUrl_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        hrefUrl_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 6;</code>
     */
    public com.google.protobuf.ByteString
        getHrefUrlBytes() {
      java.lang.Object ref = hrefUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hrefUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HEIGHT_FIELD_NUMBER = 7;
    private int height_;
    /**
     * <pre>
     *web notice消息的高度
     * </pre>
     *
     * <code>int32 height = 7;</code>
     */
    public int getHeight() {
      return height_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteFriendId_);
      }
      if (!getWebCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, webCode_);
      }
      if (time_ != 0L) {
        output.writeInt64(5, time_);
      }
      if (!getHrefUrlBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, hrefUrl_);
      }
      if (height_ != 0) {
        output.writeInt32(7, height_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteFriendIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteFriendId_);
      }
      if (!getWebCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, webCode_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, time_);
      }
      if (!getHrefUrlBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, hrefUrl_);
      }
      if (height_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, height_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.U2WebNotice)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.U2WebNotice other = (com.akaxin.proto.core.CoreProto.U2WebNotice) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteFriendId()
          .equals(other.getSiteFriendId());
      result = result && getWebCode()
          .equals(other.getWebCode());
      result = result && (getTime()
          == other.getTime());
      result = result && getHrefUrl()
          .equals(other.getHrefUrl());
      result = result && (getHeight()
          == other.getHeight());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_FRIEND_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteFriendId().hashCode();
      hash = (37 * hash) + WEB_CODE_FIELD_NUMBER;
      hash = (53 * hash) + getWebCode().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (37 * hash) + HREF_URL_FIELD_NUMBER;
      hash = (53 * hash) + getHrefUrl().hashCode();
      hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + getHeight();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.U2WebNotice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.U2WebNotice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *二人WEB通知：内嵌web通知消息
     * </pre>
     *
     * Protobuf type {@code core.U2WebNotice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.U2WebNotice)
        com.akaxin.proto.core.CoreProto.U2WebNoticeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2WebNotice_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2WebNotice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.U2WebNotice.class, com.akaxin.proto.core.CoreProto.U2WebNotice.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.U2WebNotice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteFriendId_ = "";

        webCode_ = "";

        time_ = 0L;

        hrefUrl_ = "";

        height_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_U2WebNotice_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.U2WebNotice getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.U2WebNotice.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.U2WebNotice build() {
        com.akaxin.proto.core.CoreProto.U2WebNotice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.U2WebNotice buildPartial() {
        com.akaxin.proto.core.CoreProto.U2WebNotice result = new com.akaxin.proto.core.CoreProto.U2WebNotice(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteFriendId_ = siteFriendId_;
        result.webCode_ = webCode_;
        result.time_ = time_;
        result.hrefUrl_ = hrefUrl_;
        result.height_ = height_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.U2WebNotice) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.U2WebNotice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.U2WebNotice other) {
        if (other == com.akaxin.proto.core.CoreProto.U2WebNotice.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteFriendId().isEmpty()) {
          siteFriendId_ = other.siteFriendId_;
          onChanged();
        }
        if (!other.getWebCode().isEmpty()) {
          webCode_ = other.webCode_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        if (!other.getHrefUrl().isEmpty()) {
          hrefUrl_ = other.hrefUrl_;
          onChanged();
        }
        if (other.getHeight() != 0) {
          setHeight(other.getHeight());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.U2WebNotice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.U2WebNotice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteFriendId_ = "";
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public java.lang.String getSiteFriendId() {
        java.lang.Object ref = siteFriendId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteFriendId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteFriendIdBytes() {
        java.lang.Object ref = siteFriendId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteFriendId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteFriendId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder clearSiteFriendId() {
        
        siteFriendId_ = getDefaultInstance().getSiteFriendId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *to
       * </pre>
       *
       * <code>string site_friend_id = 3;</code>
       */
      public Builder setSiteFriendIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteFriendId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object webCode_ = "";
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public java.lang.String getWebCode() {
        java.lang.Object ref = webCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          webCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public com.google.protobuf.ByteString
          getWebCodeBytes() {
        java.lang.Object ref = webCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          webCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder setWebCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        webCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder clearWebCode() {
        
        webCode_ = getDefaultInstance().getWebCode();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder setWebCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        webCode_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object hrefUrl_ = "";
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public java.lang.String getHrefUrl() {
        java.lang.Object ref = hrefUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hrefUrl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public com.google.protobuf.ByteString
          getHrefUrlBytes() {
        java.lang.Object ref = hrefUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hrefUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public Builder setHrefUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        hrefUrl_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public Builder clearHrefUrl() {
        
        hrefUrl_ = getDefaultInstance().getHrefUrl();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public Builder setHrefUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        hrefUrl_ = value;
        onChanged();
        return this;
      }

      private int height_ ;
      /**
       * <pre>
       *web notice消息的高度
       * </pre>
       *
       * <code>int32 height = 7;</code>
       */
      public int getHeight() {
        return height_;
      }
      /**
       * <pre>
       *web notice消息的高度
       * </pre>
       *
       * <code>int32 height = 7;</code>
       */
      public Builder setHeight(int value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *web notice消息的高度
       * </pre>
       *
       * <code>int32 height = 7;</code>
       */
      public Builder clearHeight() {
        
        height_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.U2WebNotice)
    }

    // @@protoc_insertion_point(class_scope:core.U2WebNotice)
    private static final com.akaxin.proto.core.CoreProto.U2WebNotice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.U2WebNotice();
    }

    public static com.akaxin.proto.core.CoreProto.U2WebNotice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<U2WebNotice>
        PARSER = new com.google.protobuf.AbstractParser<U2WebNotice>() {
      public U2WebNotice parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new U2WebNotice(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<U2WebNotice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<U2WebNotice> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.U2WebNotice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupWebNoticeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:core.GroupWebNotice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    java.lang.String getMsgId();
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    java.lang.String getSiteUserId();
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getSiteUserIdBytes();

    /**
     * <pre>
     *群ID(to)
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    java.lang.String getSiteGroupId();
    /**
     * <pre>
     *群ID(to)
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getSiteGroupIdBytes();

    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    java.lang.String getWebCode();
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    com.google.protobuf.ByteString
        getWebCodeBytes();

    /**
     * <pre>
     *消息时间
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    long getTime();

    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 6;</code>
     */
    java.lang.String getHrefUrl();
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 6;</code>
     */
    com.google.protobuf.ByteString
        getHrefUrlBytes();

    /**
     * <pre>
     *web notice消息的高度
     * </pre>
     *
     * <code>int32 height = 7;</code>
     */
    int getHeight();
  }
  /**
   * <pre>
   *群组WEB通知：内嵌web通知消息
   * </pre>
   *
   * Protobuf type {@code core.GroupWebNotice}
   */
  public  static final class GroupWebNotice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:core.GroupWebNotice)
      GroupWebNoticeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupWebNotice.newBuilder() to construct.
    private GroupWebNotice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupWebNotice() {
      msgId_ = "";
      siteUserId_ = "";
      siteGroupId_ = "";
      webCode_ = "";
      time_ = 0L;
      hrefUrl_ = "";
      height_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GroupWebNotice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              msgId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              siteUserId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              siteGroupId_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              webCode_ = s;
              break;
            }
            case 40: {

              time_ = input.readInt64();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              hrefUrl_ = s;
              break;
            }
            case 56: {

              height_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWebNotice_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWebNotice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.akaxin.proto.core.CoreProto.GroupWebNotice.class, com.akaxin.proto.core.CoreProto.GroupWebNotice.Builder.class);
    }

    public static final int MSG_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object msgId_;
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public java.lang.String getMsgId() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *消息ID
     * </pre>
     *
     * <code>string msg_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      java.lang.Object ref = msgId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object siteUserId_;
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public java.lang.String getSiteUserId() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *from
     * </pre>
     *
     * <code>string site_user_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSiteUserIdBytes() {
      java.lang.Object ref = siteUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SITE_GROUP_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object siteGroupId_;
    /**
     * <pre>
     *群ID(to)
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    public java.lang.String getSiteGroupId() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        siteGroupId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *群ID(to)
     * </pre>
     *
     * <code>string site_group_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSiteGroupIdBytes() {
      java.lang.Object ref = siteGroupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        siteGroupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WEB_CODE_FIELD_NUMBER = 4;
    private volatile java.lang.Object webCode_;
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    public java.lang.String getWebCode() {
      java.lang.Object ref = webCode_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        webCode_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *统一使用web消息需要的代码内容
     * </pre>
     *
     * <code>string web_code = 4;</code>
     */
    public com.google.protobuf.ByteString
        getWebCodeBytes() {
      java.lang.Object ref = webCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        webCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIME_FIELD_NUMBER = 5;
    private long time_;
    /**
     * <pre>
     *消息时间
     * </pre>
     *
     * <code>int64 time = 5;</code>
     */
    public long getTime() {
      return time_;
    }

    public static final int HREF_URL_FIELD_NUMBER = 6;
    private volatile java.lang.Object hrefUrl_;
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 6;</code>
     */
    public java.lang.String getHrefUrl() {
      java.lang.Object ref = hrefUrl_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        hrefUrl_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *跳转链接；如果为空则不跳转。
     * </pre>
     *
     * <code>string href_url = 6;</code>
     */
    public com.google.protobuf.ByteString
        getHrefUrlBytes() {
      java.lang.Object ref = hrefUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hrefUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HEIGHT_FIELD_NUMBER = 7;
    private int height_;
    /**
     * <pre>
     *web notice消息的高度
     * </pre>
     *
     * <code>int32 height = 7;</code>
     */
    public int getHeight() {
      return height_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getMsgIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, siteGroupId_);
      }
      if (!getWebCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, webCode_);
      }
      if (time_ != 0L) {
        output.writeInt64(5, time_);
      }
      if (!getHrefUrlBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, hrefUrl_);
      }
      if (height_ != 0) {
        output.writeInt32(7, height_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getMsgIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgId_);
      }
      if (!getSiteUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, siteUserId_);
      }
      if (!getSiteGroupIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, siteGroupId_);
      }
      if (!getWebCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, webCode_);
      }
      if (time_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, time_);
      }
      if (!getHrefUrlBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, hrefUrl_);
      }
      if (height_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, height_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.akaxin.proto.core.CoreProto.GroupWebNotice)) {
        return super.equals(obj);
      }
      com.akaxin.proto.core.CoreProto.GroupWebNotice other = (com.akaxin.proto.core.CoreProto.GroupWebNotice) obj;

      boolean result = true;
      result = result && getMsgId()
          .equals(other.getMsgId());
      result = result && getSiteUserId()
          .equals(other.getSiteUserId());
      result = result && getSiteGroupId()
          .equals(other.getSiteGroupId());
      result = result && getWebCode()
          .equals(other.getWebCode());
      result = result && (getTime()
          == other.getTime());
      result = result && getHrefUrl()
          .equals(other.getHrefUrl());
      result = result && (getHeight()
          == other.getHeight());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + SITE_USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteUserId().hashCode();
      hash = (37 * hash) + SITE_GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSiteGroupId().hashCode();
      hash = (37 * hash) + WEB_CODE_FIELD_NUMBER;
      hash = (53 * hash) + getWebCode().hashCode();
      hash = (37 * hash) + TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTime());
      hash = (37 * hash) + HREF_URL_FIELD_NUMBER;
      hash = (53 * hash) + getHrefUrl().hashCode();
      hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + getHeight();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.akaxin.proto.core.CoreProto.GroupWebNotice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.akaxin.proto.core.CoreProto.GroupWebNotice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *群组WEB通知：内嵌web通知消息
     * </pre>
     *
     * Protobuf type {@code core.GroupWebNotice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:core.GroupWebNotice)
        com.akaxin.proto.core.CoreProto.GroupWebNoticeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWebNotice_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWebNotice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.akaxin.proto.core.CoreProto.GroupWebNotice.class, com.akaxin.proto.core.CoreProto.GroupWebNotice.Builder.class);
      }

      // Construct using com.akaxin.proto.core.CoreProto.GroupWebNotice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        msgId_ = "";

        siteUserId_ = "";

        siteGroupId_ = "";

        webCode_ = "";

        time_ = 0L;

        hrefUrl_ = "";

        height_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.akaxin.proto.core.CoreProto.internal_static_core_GroupWebNotice_descriptor;
      }

      public com.akaxin.proto.core.CoreProto.GroupWebNotice getDefaultInstanceForType() {
        return com.akaxin.proto.core.CoreProto.GroupWebNotice.getDefaultInstance();
      }

      public com.akaxin.proto.core.CoreProto.GroupWebNotice build() {
        com.akaxin.proto.core.CoreProto.GroupWebNotice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.akaxin.proto.core.CoreProto.GroupWebNotice buildPartial() {
        com.akaxin.proto.core.CoreProto.GroupWebNotice result = new com.akaxin.proto.core.CoreProto.GroupWebNotice(this);
        result.msgId_ = msgId_;
        result.siteUserId_ = siteUserId_;
        result.siteGroupId_ = siteGroupId_;
        result.webCode_ = webCode_;
        result.time_ = time_;
        result.hrefUrl_ = hrefUrl_;
        result.height_ = height_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.akaxin.proto.core.CoreProto.GroupWebNotice) {
          return mergeFrom((com.akaxin.proto.core.CoreProto.GroupWebNotice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.akaxin.proto.core.CoreProto.GroupWebNotice other) {
        if (other == com.akaxin.proto.core.CoreProto.GroupWebNotice.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          onChanged();
        }
        if (!other.getSiteUserId().isEmpty()) {
          siteUserId_ = other.siteUserId_;
          onChanged();
        }
        if (!other.getSiteGroupId().isEmpty()) {
          siteGroupId_ = other.siteGroupId_;
          onChanged();
        }
        if (!other.getWebCode().isEmpty()) {
          webCode_ = other.webCode_;
          onChanged();
        }
        if (other.getTime() != 0L) {
          setTime(other.getTime());
        }
        if (!other.getHrefUrl().isEmpty()) {
          hrefUrl_ = other.hrefUrl_;
          onChanged();
        }
        if (other.getHeight() != 0) {
          setHeight(other.getHeight());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.akaxin.proto.core.CoreProto.GroupWebNotice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.akaxin.proto.core.CoreProto.GroupWebNotice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object msgId_ = "";
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public java.lang.String getMsgId() {
        java.lang.Object ref = msgId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        java.lang.Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msgId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder clearMsgId() {
        
        msgId_ = getDefaultInstance().getMsgId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息ID
       * </pre>
       *
       * <code>string msg_id = 1;</code>
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msgId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteUserId_ = "";
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public java.lang.String getSiteUserId() {
        java.lang.Object ref = siteUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSiteUserIdBytes() {
        java.lang.Object ref = siteUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder clearSiteUserId() {
        
        siteUserId_ = getDefaultInstance().getSiteUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *from
       * </pre>
       *
       * <code>string site_user_id = 2;</code>
       */
      public Builder setSiteUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object siteGroupId_ = "";
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public java.lang.String getSiteGroupId() {
        java.lang.Object ref = siteGroupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          siteGroupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSiteGroupIdBytes() {
        java.lang.Object ref = siteGroupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          siteGroupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        siteGroupId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder clearSiteGroupId() {
        
        siteGroupId_ = getDefaultInstance().getSiteGroupId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *群ID(to)
       * </pre>
       *
       * <code>string site_group_id = 3;</code>
       */
      public Builder setSiteGroupIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        siteGroupId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object webCode_ = "";
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public java.lang.String getWebCode() {
        java.lang.Object ref = webCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          webCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public com.google.protobuf.ByteString
          getWebCodeBytes() {
        java.lang.Object ref = webCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          webCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder setWebCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        webCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder clearWebCode() {
        
        webCode_ = getDefaultInstance().getWebCode();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *统一使用web消息需要的代码内容
       * </pre>
       *
       * <code>string web_code = 4;</code>
       */
      public Builder setWebCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        webCode_ = value;
        onChanged();
        return this;
      }

      private long time_ ;
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public long getTime() {
        return time_;
      }
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder setTime(long value) {
        
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *消息时间
       * </pre>
       *
       * <code>int64 time = 5;</code>
       */
      public Builder clearTime() {
        
        time_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object hrefUrl_ = "";
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public java.lang.String getHrefUrl() {
        java.lang.Object ref = hrefUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hrefUrl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public com.google.protobuf.ByteString
          getHrefUrlBytes() {
        java.lang.Object ref = hrefUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hrefUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public Builder setHrefUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        hrefUrl_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public Builder clearHrefUrl() {
        
        hrefUrl_ = getDefaultInstance().getHrefUrl();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *跳转链接；如果为空则不跳转。
       * </pre>
       *
       * <code>string href_url = 6;</code>
       */
      public Builder setHrefUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        hrefUrl_ = value;
        onChanged();
        return this;
      }

      private int height_ ;
      /**
       * <pre>
       *web notice消息的高度
       * </pre>
       *
       * <code>int32 height = 7;</code>
       */
      public int getHeight() {
        return height_;
      }
      /**
       * <pre>
       *web notice消息的高度
       * </pre>
       *
       * <code>int32 height = 7;</code>
       */
      public Builder setHeight(int value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *web notice消息的高度
       * </pre>
       *
       * <code>int32 height = 7;</code>
       */
      public Builder clearHeight() {
        
        height_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:core.GroupWebNotice)
    }

    // @@protoc_insertion_point(class_scope:core.GroupWebNotice)
    private static final com.akaxin.proto.core.CoreProto.GroupWebNotice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.akaxin.proto.core.CoreProto.GroupWebNotice();
    }

    public static com.akaxin.proto.core.CoreProto.GroupWebNotice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupWebNotice>
        PARSER = new com.google.protobuf.AbstractParser<GroupWebNotice>() {
      public GroupWebNotice parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new GroupWebNotice(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GroupWebNotice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupWebNotice> getParserForType() {
      return PARSER;
    }

    public com.akaxin.proto.core.CoreProto.GroupWebNotice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_ErrorInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_ErrorInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_NoneResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_NoneResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_TransportPackageData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_TransportPackageData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_TransportPackageData_HeaderEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_TransportPackageData_HeaderEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_MsgStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_MsgStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_MsgText_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_MsgText_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_MsgSecretText_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_MsgSecretText_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupText_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupText_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupSecretText_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupSecretText_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_MsgImage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_MsgImage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_MsgSecretImage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_MsgSecretImage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupImage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupImage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupSecretImage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupSecretImage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_MsgVoice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_MsgVoice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_MsgSecretVoice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_MsgSecretVoice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupVoice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupVoice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupSecretVoice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupSecretVoice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_U2Map_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_U2Map_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_U2SecretMap_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_U2SecretMap_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupMap_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupMap_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupSecretMap_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupSecretMap_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_U2MsgNotice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_U2MsgNotice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupMsgNotice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupMsgNotice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_U2Recall_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_U2Recall_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupRecall_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupRecall_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_U2Web_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_U2Web_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupWeb_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupWeb_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_U2WebNotice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_U2WebNotice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_core_GroupWebNotice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_core_GroupWebNotice_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\017core/core.proto\022\004core\"\'\n\tErrorInfo\022\014\n\004" +
      "code\030\001 \001(\t\022\014\n\004info\030\002 \001(\t\"\016\n\014NoneResponse" +
      "\"\251\001\n\024TransportPackageData\022\034\n\003err\030\001 \001(\0132\017" +
      ".core.ErrorInfo\022\014\n\004data\030\002 \001(\014\0226\n\006header\030" +
      "\003 \003(\0132&.core.TransportPackageData.Header" +
      "Entry\032-\n\013HeaderEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005val" +
      "ue\030\002 \001(\t:\0028\001\"]\n\tMsgStatus\022\016\n\006msg_id\030\001 \001(" +
      "\t\022\022\n\nmsg_status\030\002 \001(\005\022\027\n\017msg_server_time" +
      "\030\003 \001(\003\022\023\n\013msg_pointer\030\004 \001(\005\"c\n\007MsgText\022\016" +
      "\n\006msg_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\026\n\016",
      "site_friend_id\030\003 \001(\t\022\014\n\004text\030\004 \001(\014\022\014\n\004ti" +
      "me\030\005 \001(\003\"\226\001\n\rMsgSecretText\022\016\n\006msg_id\030\001 \001" +
      "(\t\022\024\n\014site_user_id\030\002 \001(\t\022\026\n\016site_friend_" +
      "id\030\003 \001(\t\022\014\n\004text\030\004 \001(\014\022\025\n\rbase64_ts_key\030" +
      "\005 \001(\t\022\024\n\014to_device_id\030\006 \001(\t\022\014\n\004time\030\007 \001(" +
      "\003\"}\n\tGroupText\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014site_u" +
      "ser_id\030\002 \001(\t\022\025\n\rsite_group_id\030\003 \001(\t\022\014\n\004t" +
      "ext\030\004 \001(\014\022\014\n\004time\030\005 \001(\003\022\027\n\017at_site_user_" +
      "id\030\006 \001(\t\"\227\001\n\017GroupSecretText\022\016\n\006msg_id\030\001" +
      " \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\025\n\rsite_group",
      "_id\030\003 \001(\t\022\014\n\004text\030\004 \001(\014\022\025\n\rbase64_ts_key" +
      "\030\005 \001(\t\022\024\n\014to_device_id\030\006 \001(\t\022\014\n\004time\030\007 \001" +
      "(\003\"g\n\010MsgImage\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014site_u" +
      "ser_id\030\002 \001(\t\022\026\n\016site_friend_id\030\003 \001(\t\022\017\n\007" +
      "imageId\030\004 \001(\t\022\014\n\004time\030\007 \001(\003\"\232\001\n\016MsgSecre" +
      "tImage\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014site_user_id\030\002" +
      " \001(\t\022\026\n\016site_friend_id\030\003 \001(\t\022\017\n\007imageId\030" +
      "\004 \001(\t\022\025\n\rbase64_ts_key\030\005 \001(\t\022\024\n\014to_devic" +
      "e_id\030\006 \001(\t\022\014\n\004time\030\007 \001(\003\"h\n\nGroupImage\022\016" +
      "\n\006msg_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\025\n\r",
      "site_group_id\030\003 \001(\t\022\017\n\007imageId\030\004 \001(\t\022\014\n\004" +
      "time\030\007 \001(\003\"\233\001\n\020GroupSecretImage\022\016\n\006msg_i" +
      "d\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\025\n\rsite_gr" +
      "oup_id\030\003 \001(\t\022\017\n\007imageId\030\004 \001(\t\022\025\n\rbase64_" +
      "ts_key\030\005 \001(\t\022\024\n\014to_device_id\030\006 \001(\t\022\014\n\004ti" +
      "me\030\007 \001(\003\"g\n\010MsgVoice\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014" +
      "site_user_id\030\002 \001(\t\022\026\n\016site_friend_id\030\003 \001" +
      "(\t\022\017\n\007voiceId\030\004 \001(\t\022\014\n\004time\030\007 \001(\003\"\232\001\n\016Ms" +
      "gSecretVoice\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014site_use" +
      "r_id\030\002 \001(\t\022\026\n\016site_friend_id\030\003 \001(\t\022\017\n\007vo",
      "iceId\030\004 \001(\t\022\025\n\rbase64_ts_key\030\005 \001(\t\022\024\n\014to" +
      "_device_id\030\006 \001(\t\022\014\n\004time\030\007 \001(\003\"h\n\nGroupV" +
      "oice\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001" +
      "(\t\022\025\n\rsite_group_id\030\003 \001(\t\022\017\n\007voiceId\030\004 \001" +
      "(\t\022\014\n\004time\030\007 \001(\003\"\233\001\n\020GroupSecretVoice\022\016\n" +
      "\006msg_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\025\n\rs" +
      "ite_group_id\030\003 \001(\t\022\017\n\007voiceId\030\004 \001(\t\022\025\n\rb" +
      "ase64_ts_key\030\005 \001(\t\022\024\n\014to_device_id\030\006 \001(\t" +
      "\022\014\n\004time\030\007 \001(\003\"m\n\005U2Map\022\016\n\006msg_id\030\001 \001(\t\022" +
      "\024\n\014site_user_id\030\002 \001(\t\022\026\n\016site_friend_id\030",
      "\003 \001(\t\022\013\n\003lng\030\004 \001(\t\022\013\n\003lat\030\005 \001(\t\022\014\n\004time\030" +
      "\006 \001(\003\"\256\001\n\013U2SecretMap\022\016\n\006msg_id\030\001 \001(\t\022\024\n" +
      "\014site_user_id\030\002 \001(\t\022\026\n\016site_friend_id\030\003 " +
      "\001(\t\022\022\n\nbase64_lng\030\004 \001(\t\022\022\n\nbase64_lat\030\005 " +
      "\001(\t\022\025\n\rbase64_ts_key\030\006 \001(\t\022\024\n\014to_device_" +
      "id\030\007 \001(\t\022\014\n\004time\030\010 \001(\003\"o\n\010GroupMap\022\016\n\006ms" +
      "g_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\025\n\rsite" +
      "_group_id\030\003 \001(\t\022\013\n\003lng\030\004 \001(\t\022\013\n\003lat\030\005 \001(" +
      "\t\022\014\n\004time\030\006 \001(\003\"\260\001\n\016GroupSecretMap\022\016\n\006ms" +
      "g_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\025\n\rsite",
      "_group_id\030\003 \001(\t\022\022\n\nbase64_lng\030\004 \001(\t\022\022\n\nb" +
      "ase64_lat\030\005 \001(\t\022\025\n\rbase64_ts_key\030\006 \001(\t\022\024" +
      "\n\014to_device_id\030\007 \001(\t\022\014\n\004time\030\010 \001(\003\"g\n\013U2" +
      "MsgNotice\022\024\n\014site_user_id\030\001 \001(\t\022\026\n\016site_" +
      "friend_id\030\002 \001(\t\022\014\n\004text\030\003 \001(\014\022\014\n\004time\030\004 " +
      "\001(\003\022\016\n\006msg_id\030\005 \001(\t\"i\n\016GroupMsgNotice\022\024\n" +
      "\014site_user_id\030\001 \001(\t\022\025\n\rsite_group_id\030\002 \001" +
      "(\t\022\014\n\004text\030\003 \001(\014\022\014\n\004time\030\004 \001(\003\022\016\n\006msg_id" +
      "\030\005 \001(\t\"m\n\010U2Recall\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014si" +
      "te_user_id\030\002 \001(\t\022\026\n\016site_friend_id\030\003 \001(\t",
      "\022\025\n\rrecall_msg_id\030\004 \001(\t\022\014\n\004time\030\005 \001(\003\"o\n" +
      "\013GroupRecall\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014site_use" +
      "r_id\030\002 \001(\t\022\025\n\rsite_group_id\030\003 \001(\t\022\025\n\rrec" +
      "all_msg_id\030\004 \001(\t\022\014\n\004time\030\005 \001(\003\"\226\001\n\005U2Web" +
      "\022\016\n\006msg_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\026" +
      "\n\016site_friend_id\030\003 \001(\t\022\020\n\010web_code\030\004 \001(\t" +
      "\022\r\n\005width\030\005 \001(\005\022\016\n\006height\030\006 \001(\005\022\014\n\004time\030" +
      "\007 \001(\003\022\020\n\010href_url\030\010 \001(\t\"\230\001\n\010GroupWeb\022\016\n\006" +
      "msg_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\025\n\rsi" +
      "te_group_id\030\003 \001(\t\022\020\n\010web_code\030\004 \001(\t\022\r\n\005w",
      "idth\030\005 \001(\005\022\016\n\006height\030\006 \001(\005\022\014\n\004time\030\007 \001(\003" +
      "\022\020\n\010href_url\030\010 \001(\t\"\215\001\n\013U2WebNotice\022\016\n\006ms" +
      "g_id\030\001 \001(\t\022\024\n\014site_user_id\030\002 \001(\t\022\026\n\016site" +
      "_friend_id\030\003 \001(\t\022\020\n\010web_code\030\004 \001(\t\022\014\n\004ti" +
      "me\030\005 \001(\003\022\020\n\010href_url\030\006 \001(\t\022\016\n\006height\030\007 \001" +
      "(\005\"\217\001\n\016GroupWebNotice\022\016\n\006msg_id\030\001 \001(\t\022\024\n" +
      "\014site_user_id\030\002 \001(\t\022\025\n\rsite_group_id\030\003 \001" +
      "(\t\022\020\n\010web_code\030\004 \001(\t\022\014\n\004time\030\005 \001(\003\022\020\n\010hr" +
      "ef_url\030\006 \001(\t\022\016\n\006height\030\007 \001(\005*\204\003\n\tHeaderK" +
      "ey\022\031\n\025CLIENT_SOCKET_VERSION\020\000\022!\n\035CLIENT_",
      "SOCKET_SITE_SESSION_ID\020\001\022%\n!CLIENT_SOCKE" +
      "T_PLATFORM_SESSION_ID\020\002\022\033\n\027CLIENT_SOCKET" +
      "_DEVICE_ID\020\003\022\032\n\026CLIENT_SOCKET_LANGUAGE\020\004" +
      "\022\026\n\022CLIENT_SOCKET_TYPE\020\005\022\033\n\026CLIENT_REQUE" +
      "ST_REFERER\020\365\003\022\037\n\032CLIENT_REQUEST_SERVER_H" +
      "OST\020\366\003\022\037\n\032CLIENT_REQUEST_SERVER_PORT\020\367\003\022" +
      "\030\n\023SITE_SERVER_VERSION\020\351\007\022\025\n\020SITE_SERVER" +
      "_HOST\020\352\007\022\025\n\020SITE_SERVER_PORT\020\353\007\022\032\n\025PLUGI" +
      "N_CLIENT_REFERER\020\271\027*\275\003\n\007MsgType\022\n\n\006NOTIC" +
      "E\020\000\022\016\n\nMSG_STATUS\020\001\022\010\n\004TEXT\020\003\022\017\n\013SECRET_",
      "TEXT\020\004\022\016\n\nGROUP_TEXT\020\005\022\025\n\021GROUP_SECRET_T" +
      "EXT\020\006\022\t\n\005IMAGE\020\007\022\020\n\014SECRET_IMAGE\020\010\022\017\n\013GR" +
      "OUP_IMAGE\020\t\022\026\n\022GROUP_SECRET_IMAGE\020\n\022\t\n\005V" +
      "OICE\020\013\022\020\n\014SECRET_VOICE\020\014\022\017\n\013GROUP_VOICE\020" +
      "\r\022\026\n\022GROUP_SECRET_VOICE\020\016\022\n\n\006U2_MAP\020\017\022\021\n" +
      "\rU2_SECRET_MAP\020\020\022\r\n\tGROUP_MAP\020\021\022\024\n\020GROUP" +
      "_SECRET_MAP\020\022\022\r\n\tU2_NOTICE\020\023\022\020\n\014GROUP_NO" +
      "TICE\020\024\022\r\n\tU2_RECALL\020\025\022\020\n\014GROUP_RECALL\020\026\022" +
      "\n\n\006U2_WEB\020\027\022\r\n\tGROUP_WEB\020\030\022\021\n\rU2_WEB_NOT" +
      "ICE\020\031\022\024\n\020GROUP_WEB_NOTICE\020\032B\"\n\025com.akaxi",
      "n.proto.coreB\tCoreProtob\006proto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_core_ErrorInfo_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_core_ErrorInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_ErrorInfo_descriptor,
        new java.lang.String[] { "Code", "Info", });
    internal_static_core_NoneResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_core_NoneResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_NoneResponse_descriptor,
        new java.lang.String[] { });
    internal_static_core_TransportPackageData_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_core_TransportPackageData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_TransportPackageData_descriptor,
        new java.lang.String[] { "Err", "Data", "Header", });
    internal_static_core_TransportPackageData_HeaderEntry_descriptor =
      internal_static_core_TransportPackageData_descriptor.getNestedTypes().get(0);
    internal_static_core_TransportPackageData_HeaderEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_TransportPackageData_HeaderEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_core_MsgStatus_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_core_MsgStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_MsgStatus_descriptor,
        new java.lang.String[] { "MsgId", "MsgStatus", "MsgServerTime", "MsgPointer", });
    internal_static_core_MsgText_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_core_MsgText_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_MsgText_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "Text", "Time", });
    internal_static_core_MsgSecretText_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_core_MsgSecretText_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_MsgSecretText_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "Text", "Base64TsKey", "ToDeviceId", "Time", });
    internal_static_core_GroupText_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_core_GroupText_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupText_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "Text", "Time", "AtSiteUserId", });
    internal_static_core_GroupSecretText_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_core_GroupSecretText_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupSecretText_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "Text", "Base64TsKey", "ToDeviceId", "Time", });
    internal_static_core_MsgImage_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_core_MsgImage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_MsgImage_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "ImageId", "Time", });
    internal_static_core_MsgSecretImage_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_core_MsgSecretImage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_MsgSecretImage_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "ImageId", "Base64TsKey", "ToDeviceId", "Time", });
    internal_static_core_GroupImage_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_core_GroupImage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupImage_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "ImageId", "Time", });
    internal_static_core_GroupSecretImage_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_core_GroupSecretImage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupSecretImage_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "ImageId", "Base64TsKey", "ToDeviceId", "Time", });
    internal_static_core_MsgVoice_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_core_MsgVoice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_MsgVoice_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "VoiceId", "Time", });
    internal_static_core_MsgSecretVoice_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_core_MsgSecretVoice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_MsgSecretVoice_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "VoiceId", "Base64TsKey", "ToDeviceId", "Time", });
    internal_static_core_GroupVoice_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_core_GroupVoice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupVoice_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "VoiceId", "Time", });
    internal_static_core_GroupSecretVoice_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_core_GroupSecretVoice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupSecretVoice_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "VoiceId", "Base64TsKey", "ToDeviceId", "Time", });
    internal_static_core_U2Map_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_core_U2Map_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_U2Map_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "Lng", "Lat", "Time", });
    internal_static_core_U2SecretMap_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_core_U2SecretMap_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_U2SecretMap_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "Base64Lng", "Base64Lat", "Base64TsKey", "ToDeviceId", "Time", });
    internal_static_core_GroupMap_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_core_GroupMap_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupMap_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "Lng", "Lat", "Time", });
    internal_static_core_GroupSecretMap_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_core_GroupSecretMap_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupSecretMap_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "Base64Lng", "Base64Lat", "Base64TsKey", "ToDeviceId", "Time", });
    internal_static_core_U2MsgNotice_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_core_U2MsgNotice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_U2MsgNotice_descriptor,
        new java.lang.String[] { "SiteUserId", "SiteFriendId", "Text", "Time", "MsgId", });
    internal_static_core_GroupMsgNotice_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_core_GroupMsgNotice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupMsgNotice_descriptor,
        new java.lang.String[] { "SiteUserId", "SiteGroupId", "Text", "Time", "MsgId", });
    internal_static_core_U2Recall_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_core_U2Recall_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_U2Recall_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "RecallMsgId", "Time", });
    internal_static_core_GroupRecall_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_core_GroupRecall_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupRecall_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "RecallMsgId", "Time", });
    internal_static_core_U2Web_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_core_U2Web_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_U2Web_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "WebCode", "Width", "Height", "Time", "HrefUrl", });
    internal_static_core_GroupWeb_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_core_GroupWeb_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupWeb_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "WebCode", "Width", "Height", "Time", "HrefUrl", });
    internal_static_core_U2WebNotice_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_core_U2WebNotice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_U2WebNotice_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteFriendId", "WebCode", "Time", "HrefUrl", "Height", });
    internal_static_core_GroupWebNotice_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_core_GroupWebNotice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_core_GroupWebNotice_descriptor,
        new java.lang.String[] { "MsgId", "SiteUserId", "SiteGroupId", "WebCode", "Time", "HrefUrl", "Height", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}