content: package com.cf.chat.domain;// Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: DeviceMessage.proto
  
  public final class DeviceMessage {
    private DeviceMessage() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    /**
     * <pre>
     * --- global enums --- 
     * </pre>
     *
     * Protobuf enum {@code MessageType}
     */
    public enum MessageType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       *心跳
       * </pre>
       *
       * <code>HEARTBEAT_REQUEST = 1;</code>
       */
      HEARTBEAT_REQUEST(1),
      /**
       * <pre>
       *心跳回复
       * </pre>
       *
       * <code>HEARTBEAT_RESPONSE = 2;</code>
       */
      HEARTBEAT_RESPONSE(2),
      /**
       * <pre>
       *设备登录
       * </pre>
       *
       * <code>DEVICE_LOGIN_REQUEST = 3;</code>
       */
      DEVICE_LOGIN_REQUEST(3),
      /**
       * <pre>
       *设备登录回复
       * </pre>
       *
       * <code>DEVICE_LOGIN_RESPONSE = 4;</code>
       */
      DEVICE_LOGIN_RESPONSE(4),
      /**
       * <pre>
       *消息确认
       * </pre>
       *
       * <code>ACKNOWLEDGEMENT = 5;</code>
       */
      ACKNOWLEDGEMENT(5),
      /**
       * <pre>
       *设置时间
       * </pre>
       *
       * <code>SETTING_DATE_REQUEST = 10;</code>
       */
      SETTING_DATE_REQUEST(10),
      /**
       * <pre>
       *设置时间回复
       * </pre>
       *
       * <code>SETTING_DATE_RESPONSE = 11;</code>
       */
      SETTING_DATE_RESPONSE(11),
      /**
       * <pre>
       *设置二维码
       * </pre>
       *
       * <code>SETTING_QR_REQUEST = 12;</code>
       */
      SETTING_QR_REQUEST(12),
      /**
       * <pre>
       *设置二维码回复
       * </pre>
       *
       * <code>SETTING_QR_RESPONSE = 13;</code>
       */
      SETTING_QR_RESPONSE(13),
      /**
       * <pre>
       *设置费率
       * </pre>
       *
       * <code>SETTING_RATE_REQUEST = 14;</code>
       */
      SETTING_RATE_REQUEST(14),
      /**
       * <pre>
       *设置费率回复
       * </pre>
       *
       * <code>SETTING_RATE_RESPONSE = 15;</code>
       */
      SETTING_RATE_RESPONSE(15),
      /**
       * <pre>
       *上报费率
       * </pre>
       *
       * <code>RATE_QUERY_REQUEST = 20;</code>
       */
      RATE_QUERY_REQUEST(20),
      /**
       * <pre>
       *上报费率回复
       * </pre>
       *
       * <code>RATE_QUERY_RESPONSE = 21;</code>
       */
      RATE_QUERY_RESPONSE(21),
      /**
       * <pre>
       *监控
       * </pre>
       *
       * <code>MONITORING_REQUEST = 22;</code>
       */
      MONITORING_REQUEST(22),
      /**
       * <pre>
       *监控回复
       * </pre>
       *
       * <code>MONITORING_RESPONSE = 23;</code>
       */
      MONITORING_RESPONSE(23),
      /**
       * <pre>
       *预约充电
       * </pre>
       *
       * <code>RESERVE_REQUEST = 30;</code>
       */
      RESERVE_REQUEST(30),
      /**
       * <pre>
       *预约充电回复
       * </pre>
       *
       * <code>RESERVE_RESPONSE = 31;</code>
       */
      RESERVE_RESPONSE(31),
      /**
       * <pre>
       *预约查询
       * </pre>
       *
       * <code>RESERVE_QUERY_REQUEST = 32;</code>
       */
      RESERVE_QUERY_REQUEST(32),
      /**
       * <pre>
       *预约查询回复
       * </pre>
       *
       * <code>RESERVE_QUERY_RESPONSE = 33;</code>
       */
      RESERVE_QUERY_RESPONSE(33),
      /**
       * <pre>
       *取消预约
       * </pre>
       *
       * <code>RESERVE_CANCEL_REQUEST = 34;</code>
       */
      RESERVE_CANCEL_REQUEST(34),
      /**
       * <pre>
       *取消预约回复
       * </pre>
       *
       * <code>RESERVE_CANCEL_RESPONSE = 35;</code>
       */
      RESERVE_CANCEL_RESPONSE(35),
      /**
       * <pre>
       *鉴权
       * </pre>
       *
       * <code>VERIFY_REQUEST = 40;</code>
       */
      VERIFY_REQUEST(40),
      /**
       * <pre>
       *鉴权回复
       * </pre>
       *
       * <code>VERIFY_RESPONSE = 41;</code>
       */
      VERIFY_RESPONSE(41),
      /**
       * <pre>
       *开始充电
       * </pre>
       *
       * <code>START_CHARGE_REQUEST = 42;</code>
       */
      START_CHARGE_REQUEST(42),
      /**
       * <pre>
       *开始充电回复
       * </pre>
       *
       * <code>START_CHARGE_RESPONSE = 43;</code>
       */
      START_CHARGE_RESPONSE(43),
      /**
       * <pre>
       *结束充电
       * </pre>
       *
       * <code>STOP_CHARGE_REQUEST = 44;</code>
       */
      STOP_CHARGE_REQUEST(44),
      /**
       * <pre>
       *结束充电回复
       * </pre>
       *
       * <code>STOP_CHARGE_RESPONSE = 45;</code>
       */
      STOP_CHARGE_RESPONSE(45),
      /**
       * <pre>
       *充电枪状态请求
       * </pre>
       *
       * <code>CHARGE_GUN_REQUEST = 46;</code>
       */
      CHARGE_GUN_REQUEST(46),
      /**
       * <pre>
       *充电枪状态回复
       * </pre>
       *
       * <code>CHARGE_GUN_RESPONSE = 47;</code>
       */
      CHARGE_GUN_RESPONSE(47),
      /**
       * <pre>
       *设备上报订单数据
       * </pre>
       *
       * <code>ORDER_REQUEST = 50;</code>
       */
      ORDER_REQUEST(50),
      /**
       * <pre>
       *设备上报订单回复
       * </pre>
       *
       * <code>ORDER_RESPONSE = 51;</code>
       */
      ORDER_RESPONSE(51),
      /**
       * <pre>
       *取消交易
       * </pre>
       *
       * <code>ORDER_CANCEL_REQUEST = 52;</code>
       */
      ORDER_CANCEL_REQUEST(52),
      /**
       * <pre>
       *取消交易回复
       * </pre>
       *
       * <code>ORDER_CANCEL_RESPONSE = 53;</code>
       */
      ORDER_CANCEL_RESPONSE(53),
      /**
       * <pre>
       *设备状态控制
       * </pre>
       *
       * <code>DEVICE_CONTROL_REQUEST = 60;</code>
       */
      DEVICE_CONTROL_REQUEST(60),
      /**
       * <pre>
       *设备状态控制回复
       * </pre>
       *
       * <code>DEVICE_CONTROL_RESPONSE = 61;</code>
       */
      DEVICE_CONTROL_RESPONSE(61),
      /**
       * <pre>
       *设备升级
       * </pre>
       *
       * <code>UPGRADE_REQUEST = 62;</code>
       */
      UPGRADE_REQUEST(62),
      /**
       * <pre>
       *设备升级回复
       * </pre>
       *
       * <code>UPGRADE_RESPONSE = 63;</code>
       */
      UPGRADE_RESPONSE(63),
      ;
  
      /**
       * <pre>
       *心跳
       * </pre>
       *
       * <code>HEARTBEAT_REQUEST = 1;</code>
       */
      public static final int HEARTBEAT_REQUEST_VALUE = 1;
      /**
       * <pre>
       *心跳回复
       * </pre>
       *
       * <code>HEARTBEAT_RESPONSE = 2;</code>
       */
      public static final int HEARTBEAT_RESPONSE_VALUE = 2;
      /**
       * <pre>
       *设备登录
       * </pre>
       *
       * <code>DEVICE_LOGIN_REQUEST = 3;</code>
       */
      public static final int DEVICE_LOGIN_REQUEST_VALUE = 3;
      /**
       * <pre>
       *设备登录回复
       * </pre>
       *
       * <code>DEVICE_LOGIN_RESPONSE = 4;</code>
       */
      public static final int DEVICE_LOGIN_RESPONSE_VALUE = 4;
      /**
       * <pre>
       *消息确认
       * </pre>
       *
       * <code>ACKNOWLEDGEMENT = 5;</code>
       */
      public static final int ACKNOWLEDGEMENT_VALUE = 5;
      /**
       * <pre>
       *设置时间
       * </pre>
       *
       * <code>SETTING_DATE_REQUEST = 10;</code>
       */
      public static final int SETTING_DATE_REQUEST_VALUE = 10;
      /**
       * <pre>
       *设置时间回复
       * </pre>
       *
       * <code>SETTING_DATE_RESPONSE = 11;</code>
       */
      public static final int SETTING_DATE_RESPONSE_VALUE = 11;
      /**
       * <pre>
       *设置二维码
       * </pre>
       *
       * <code>SETTING_QR_REQUEST = 12;</code>
       */
      public static final int SETTING_QR_REQUEST_VALUE = 12;
      /**
       * <pre>
       *设置二维码回复
       * </pre>
       *
       * <code>SETTING_QR_RESPONSE = 13;</code>
       */
      public static final int SETTING_QR_RESPONSE_VALUE = 13;
      /**
       * <pre>
       *设置费率
       * </pre>
       *
       * <code>SETTING_RATE_REQUEST = 14;</code>
       */
      public static final int SETTING_RATE_REQUEST_VALUE = 14;
      /**
       * <pre>
       *设置费率回复
       * </pre>
       *
       * <code>SETTING_RATE_RESPONSE = 15;</code>
       */
      public static final int SETTING_RATE_RESPONSE_VALUE = 15;
      /**
       * <pre>
       *上报费率
       * </pre>
       *
       * <code>RATE_QUERY_REQUEST = 20;</code>
       */
      public static final int RATE_QUERY_REQUEST_VALUE = 20;
      /**
       * <pre>
       *上报费率回复
       * </pre>
       *
       * <code>RATE_QUERY_RESPONSE = 21;</code>
       */
      public static final int RATE_QUERY_RESPONSE_VALUE = 21;
      /**
       * <pre>
       *监控
       * </pre>
       *
       * <code>MONITORING_REQUEST = 22;</code>
       */
      public static final int MONITORING_REQUEST_VALUE = 22;
      /**
       * <pre>
       *监控回复
       * </pre>
       *
       * <code>MONITORING_RESPONSE = 23;</code>
       */
      public static final int MONITORING_RESPONSE_VALUE = 23;
      /**
       * <pre>
       *预约充电
       * </pre>
       *
       * <code>RESERVE_REQUEST = 30;</code>
       */
      public static final int RESERVE_REQUEST_VALUE = 30;
      /**
       * <pre>
       *预约充电回复
       * </pre>
       *
       * <code>RESERVE_RESPONSE = 31;</code>
       */
      public static final int RESERVE_RESPONSE_VALUE = 31;
      /**
       * <pre>
       *预约查询
       * </pre>
       *
       * <code>RESERVE_QUERY_REQUEST = 32;</code>
       */
      public static final int RESERVE_QUERY_REQUEST_VALUE = 32;
      /**
       * <pre>
       *预约查询回复
       * </pre>
       *
       * <code>RESERVE_QUERY_RESPONSE = 33;</code>
       */
      public static final int RESERVE_QUERY_RESPONSE_VALUE = 33;
      /**
       * <pre>
       *取消预约
       * </pre>
       *
       * <code>RESERVE_CANCEL_REQUEST = 34;</code>
       */
      public static final int RESERVE_CANCEL_REQUEST_VALUE = 34;
      /**
       * <pre>
       *取消预约回复
       * </pre>
       *
       * <code>RESERVE_CANCEL_RESPONSE = 35;</code>
       */
      public static final int RESERVE_CANCEL_RESPONSE_VALUE = 35;
      /**
       * <pre>
       *鉴权
       * </pre>
       *
       * <code>VERIFY_REQUEST = 40;</code>
       */
      public static final int VERIFY_REQUEST_VALUE = 40;
      /**
       * <pre>
       *鉴权回复
       * </pre>
       *
       * <code>VERIFY_RESPONSE = 41;</code>
       */
      public static final int VERIFY_RESPONSE_VALUE = 41;
      /**
       * <pre>
       *开始充电
       * </pre>
       *
       * <code>START_CHARGE_REQUEST = 42;</code>
       */
      public static final int START_CHARGE_REQUEST_VALUE = 42;
      /**
       * <pre>
       *开始充电回复
       * </pre>
       *
       * <code>START_CHARGE_RESPONSE = 43;</code>
       */
      public static final int START_CHARGE_RESPONSE_VALUE = 43;
      /**
       * <pre>
       *结束充电
       * </pre>
       *
       * <code>STOP_CHARGE_REQUEST = 44;</code>
       */
      public static final int STOP_CHARGE_REQUEST_VALUE = 44;
      /**
       * <pre>
       *结束充电回复
       * </pre>
       *
       * <code>STOP_CHARGE_RESPONSE = 45;</code>
       */
      public static final int STOP_CHARGE_RESPONSE_VALUE = 45;
      /**
       * <pre>
       *充电枪状态请求
       * </pre>
       *
       * <code>CHARGE_GUN_REQUEST = 46;</code>
       */
      public static final int CHARGE_GUN_REQUEST_VALUE = 46;
      /**
       * <pre>
       *充电枪状态回复
       * </pre>
       *
       * <code>CHARGE_GUN_RESPONSE = 47;</code>
       */
      public static final int CHARGE_GUN_RESPONSE_VALUE = 47;
      /**
       * <pre>
       *设备上报订单数据
       * </pre>
       *
       * <code>ORDER_REQUEST = 50;</code>
       */
      public static final int ORDER_REQUEST_VALUE = 50;
      /**
       * <pre>
       *设备上报订单回复
       * </pre>
       *
       * <code>ORDER_RESPONSE = 51;</code>
       */
      public static final int ORDER_RESPONSE_VALUE = 51;
      /**
       * <pre>
       *取消交易
       * </pre>
       *
       * <code>ORDER_CANCEL_REQUEST = 52;</code>
       */
      public static final int ORDER_CANCEL_REQUEST_VALUE = 52;
      /**
       * <pre>
       *取消交易回复
       * </pre>
       *
       * <code>ORDER_CANCEL_RESPONSE = 53;</code>
       */
      public static final int ORDER_CANCEL_RESPONSE_VALUE = 53;
      /**
       * <pre>
       *设备状态控制
       * </pre>
       *
       * <code>DEVICE_CONTROL_REQUEST = 60;</code>
       */
      public static final int DEVICE_CONTROL_REQUEST_VALUE = 60;
      /**
       * <pre>
       *设备状态控制回复
       * </pre>
       *
       * <code>DEVICE_CONTROL_RESPONSE = 61;</code>
       */
      public static final int DEVICE_CONTROL_RESPONSE_VALUE = 61;
      /**
       * <pre>
       *设备升级
       * </pre>
       *
       * <code>UPGRADE_REQUEST = 62;</code>
       */
      public static final int UPGRADE_REQUEST_VALUE = 62;
      /**
       * <pre>
       *设备升级回复
       * </pre>
       *
       * <code>UPGRADE_RESPONSE = 63;</code>
       */
      public static final int UPGRADE_RESPONSE_VALUE = 63;
  
  
      public final int getNumber() {
        return value;
      }
  
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @Deprecated
      public static MessageType valueOf(int value) {
        return forNumber(value);
      }
  
      public static MessageType forNumber(int value) {
        switch (value) {
          case 1: return HEARTBEAT_REQUEST;
          case 2: return HEARTBEAT_RESPONSE;
          case 3: return DEVICE_LOGIN_REQUEST;
          case 4: return DEVICE_LOGIN_RESPONSE;
          case 5: return ACKNOWLEDGEMENT;
          case 10: return SETTING_DATE_REQUEST;
          case 11: return SETTING_DATE_RESPONSE;
          case 12: return SETTING_QR_REQUEST;
          case 13: return SETTING_QR_RESPONSE;
          case 14: return SETTING_RATE_REQUEST;
          case 15: return SETTING_RATE_RESPONSE;
          case 20: return RATE_QUERY_REQUEST;
          case 21: return RATE_QUERY_RESPONSE;
          case 22: return MONITORING_REQUEST;
          case 23: return MONITORING_RESPONSE;
          case 30: return RESERVE_REQUEST;
          case 31: return RESERVE_RESPONSE;
          case 32: return RESERVE_QUERY_REQUEST;
          case 33: return RESERVE_QUERY_RESPONSE;
          case 34: return RESERVE_CANCEL_REQUEST;
          case 35: return RESERVE_CANCEL_RESPONSE;
          case 40: return VERIFY_REQUEST;
          case 41: return VERIFY_RESPONSE;
          case 42: return START_CHARGE_REQUEST;
          case 43: return START_CHARGE_RESPONSE;
          case 44: return STOP_CHARGE_REQUEST;
          case 45: return STOP_CHARGE_RESPONSE;
          case 46: return CHARGE_GUN_REQUEST;
          case 47: return CHARGE_GUN_RESPONSE;
          case 50: return ORDER_REQUEST;
          case 51: return ORDER_RESPONSE;
          case 52: return ORDER_CANCEL_REQUEST;
          case 53: return ORDER_CANCEL_RESPONSE;
          case 60: return DEVICE_CONTROL_REQUEST;
          case 61: return DEVICE_CONTROL_RESPONSE;
          case 62: return UPGRADE_REQUEST;
          case 63: return UPGRADE_RESPONSE;
          default: return null;
        }
      }
  
      public static com.google.protobuf.Internal.EnumLiteMap<MessageType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          MessageType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<MessageType>() {
              public MessageType findValueByNumber(int number) {
                return MessageType.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 DeviceMessage.getDescriptor().getEnumTypes().get(0);
      }
  
      private static final MessageType[] VALUES = values();
  
      public static MessageType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private MessageType(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:MessageType)
    }
  
    /**
     * Protobuf enum {@code StatusCode}
     */
    public enum StatusCode
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       *成功
       * </pre>
       *
       * <code>SUCCESS = 0;</code>
       */
      SUCCESS(0),
      /**
       * <pre>
       *失败
       * </pre>
       *
       * <code>FAIL = 1;</code>
       */
      FAIL(1),
      /**
       * <pre>
       *出错
       * </pre>
       *
       * <code>ERROR = 2;</code>
       */
      ERROR(2),
      ;
  
      /**
       * <pre>
       *成功
       * </pre>
       *
       * <code>SUCCESS = 0;</code>
       */
      public static final int SUCCESS_VALUE = 0;
      /**
       * <pre>
       *失败
       * </pre>
       *
       * <code>FAIL = 1;</code>
       */
      public static final int FAIL_VALUE = 1;
      /**
       * <pre>
       *出错
       * </pre>
       *
       * <code>ERROR = 2;</code>
       */
      public static final int ERROR_VALUE = 2;
  
  
      public final int getNumber() {
        return value;
      }
  
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @Deprecated
      public static StatusCode valueOf(int value) {
        return forNumber(value);
      }
  
      public static StatusCode forNumber(int value) {
        switch (value) {
          case 0: return SUCCESS;
          case 1: return FAIL;
          case 2: return ERROR;
          default: return null;
        }
      }
  
      public static com.google.protobuf.Internal.EnumLiteMap<StatusCode>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          StatusCode> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<StatusCode>() {
              public StatusCode findValueByNumber(int number) {
                return StatusCode.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 DeviceMessage.getDescriptor().getEnumTypes().get(1);
      }
  
      private static final StatusCode[] VALUES = values();
  
      public static StatusCode valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private StatusCode(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:StatusCode)
    }
  
    /**
     * Protobuf enum {@code ControlCommand}
     */
    public enum ControlCommand
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       *工作
       * </pre>
       *
       * <code>WORKING = 0;</code>
       */
      WORKING(0),
      /**
       * <pre>
       *暂停
       * </pre>
       *
       * <code>PAUSE = 1;</code>
       */
      PAUSE(1),
      /**
       * <pre>
       *维护
       * </pre>
       *
       * <code>MAINTAIN = 2;</code>
       */
      MAINTAIN(2),
      /**
       * <pre>
       *测试
       * </pre>
       *
       * <code>TEST = 3;</code>
       */
      TEST(3),
      /**
       * <pre>
       *重启
       * </pre>
       *
       * <code>RESTART = 4;</code>
       */
      RESTART(4),
      /**
       * <pre>
       *恢复出厂
       * </pre>
       *
       * <code>RESET = 5;</code>
       */
      RESET(5),
      ;
  
      /**
       * <pre>
       *工作
       * </pre>
       *
       * <code>WORKING = 0;</code>
       */
      public static final int WORKING_VALUE = 0;
      /**
       * <pre>
       *暂停
       * </pre>
       *
       * <code>PAUSE = 1;</code>
       */
      public static final int PAUSE_VALUE = 1;
      /**
       * <pre>
       *维护
       * </pre>
       *
       * <code>MAINTAIN = 2;</code>
       */
      public static final int MAINTAIN_VALUE = 2;
      /**
       * <pre>
       *测试
       * </pre>
       *
       * <code>TEST = 3;</code>
       */
      public static final int TEST_VALUE = 3;
      /**
       * <pre>
       *重启
       * </pre>
       *
       * <code>RESTART = 4;</code>
       */
      public static final int RESTART_VALUE = 4;
      /**
       * <pre>
       *恢复出厂
       * </pre>
       *
       * <code>RESET = 5;</code>
       */
      public static final int RESET_VALUE = 5;
  
  
      public final int getNumber() {
        return value;
      }
  
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @Deprecated
      public static ControlCommand valueOf(int value) {
        return forNumber(value);
      }
  
      public static ControlCommand forNumber(int value) {
        switch (value) {
          case 0: return WORKING;
          case 1: return PAUSE;
          case 2: return MAINTAIN;
          case 3: return TEST;
          case 4: return RESTART;
          case 5: return RESET;
          default: return null;
        }
      }
  
      public static com.google.protobuf.Internal.EnumLiteMap<ControlCommand>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          ControlCommand> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<ControlCommand>() {
              public ControlCommand findValueByNumber(int number) {
                return ControlCommand.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 DeviceMessage.getDescriptor().getEnumTypes().get(2);
      }
  
      private static final ControlCommand[] VALUES = values();
  
      public static ControlCommand valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private ControlCommand(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:ControlCommand)
    }
  
    public interface WalletOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Wallet)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *余额
       * </pre>
       *
       * <code>required float balance = 1;</code>
       */
      boolean hasBalance();
      /**
       * <pre>
       *余额
       * </pre>
       *
       * <code>required float balance = 1;</code>
       */
      float getBalance();
    }
    /**
     * <pre>
     *用户账户钱包结构
     * </pre>
     *
     * Protobuf type {@code Wallet}
     */
    public  static final class Wallet extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Wallet)
        WalletOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Wallet.newBuilder() to construct.
      private Wallet(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Wallet() {
        balance_ = 0F;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Wallet(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 13: {
                bitField0_ |= 0x00000001;
                balance_ = input.readFloat();
                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 DeviceMessage.internal_static_Wallet_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_Wallet_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Wallet.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int BALANCE_FIELD_NUMBER = 1;
      private float balance_;
      /**
       * <pre>
       *余额
       * </pre>
       *
       * <code>required float balance = 1;</code>
       */
      public boolean hasBalance() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *余额
       * </pre>
       *
       * <code>required float balance = 1;</code>
       */
      public float getBalance() {
        return balance_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasBalance()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeFloat(1, balance_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(1, balance_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof Wallet)) {
          return super.equals(obj);
        }
        Wallet other = (Wallet) obj;
  
        boolean result = true;
        result = result && (hasBalance() == other.hasBalance());
        if (hasBalance()) {
          result = result && (
              Float.floatToIntBits(getBalance())
              == Float.floatToIntBits(
                  other.getBalance()));
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasBalance()) {
          hash = (37 * hash) + BALANCE_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getBalance());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static Wallet parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Wallet parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Wallet parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Wallet parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Wallet parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Wallet parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Wallet parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Wallet 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 Wallet parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static Wallet 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 Wallet parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Wallet 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(Wallet prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *用户账户钱包结构
       * </pre>
       *
       * Protobuf type {@code Wallet}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Wallet)
          WalletOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_Wallet_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_Wallet_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  Wallet.class, Builder.class);
        }
  
        // Construct using DeviceMessage.Wallet.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();
          balance_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_Wallet_descriptor;
        }
  
        public Wallet getDefaultInstanceForType() {
          return Wallet.getDefaultInstance();
        }
  
        public Wallet build() {
          Wallet result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public Wallet buildPartial() {
          Wallet result = new Wallet(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.balance_ = balance_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof Wallet) {
            return mergeFrom((Wallet)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(Wallet other) {
          if (other == Wallet.getDefaultInstance()) return this;
          if (other.hasBalance()) {
            setBalance(other.getBalance());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasBalance()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          Wallet parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (Wallet) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private float balance_ ;
        /**
         * <pre>
         *余额
         * </pre>
         *
         * <code>required float balance = 1;</code>
         */
        public boolean hasBalance() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *余额
         * </pre>
         *
         * <code>required float balance = 1;</code>
         */
        public float getBalance() {
          return balance_;
        }
        /**
         * <pre>
         *余额
         * </pre>
         *
         * <code>required float balance = 1;</code>
         */
        public Builder setBalance(float value) {
          bitField0_ |= 0x00000001;
          balance_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *余额
         * </pre>
         *
         * <code>required float balance = 1;</code>
         */
        public Builder clearBalance() {
          bitField0_ = (bitField0_ & ~0x00000001);
          balance_ = 0F;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Wallet)
      }
  
      // @@protoc_insertion_point(class_scope:Wallet)
      private static final Wallet DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new Wallet();
      }
  
      public static Wallet getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<Wallet>
          PARSER = new com.google.protobuf.AbstractParser<Wallet>() {
        public Wallet parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Wallet(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Wallet> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<Wallet> getParserForType() {
        return PARSER;
      }
  
      public Wallet getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UserOrBuilder extends
        // @@protoc_insertion_point(interface_extends:User)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *用户id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      boolean hasId();
      /**
       * <pre>
       *用户id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      String getId();
      /**
       * <pre>
       *用户id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      com.google.protobuf.ByteString
          getIdBytes();
  
      /**
       * <pre>
       *用户账户
       * </pre>
       *
       * <code>optional .Wallet wallet = 2;</code>
       */
      boolean hasWallet();
      /**
       * <pre>
       *用户账户
       * </pre>
       *
       * <code>optional .Wallet wallet = 2;</code>
       */
      Wallet getWallet();
      /**
       * <pre>
       *用户账户
       * </pre>
       *
       * <code>optional .Wallet wallet = 2;</code>
       */
      WalletOrBuilder getWalletOrBuilder();
    }
    /**
     * <pre>
     *用户结构
     * </pre>
     *
     * Protobuf type {@code User}
     */
    public  static final class User extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:User)
        UserOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use User.newBuilder() to construct.
      private User(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private User() {
        id_ = "";
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private User(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                id_ = bs;
                break;
              }
              case 18: {
                Wallet.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = wallet_.toBuilder();
                }
                wallet_ = input.readMessage(Wallet.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(wallet_);
                  wallet_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_User_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_User_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                User.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int ID_FIELD_NUMBER = 1;
      private volatile Object id_;
      /**
       * <pre>
       *用户id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *用户id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      public String getId() {
        Object ref = id_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            id_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *用户id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int WALLET_FIELD_NUMBER = 2;
      private Wallet wallet_;
      /**
       * <pre>
       *用户账户
       * </pre>
       *
       * <code>optional .Wallet wallet = 2;</code>
       */
      public boolean hasWallet() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *用户账户
       * </pre>
       *
       * <code>optional .Wallet wallet = 2;</code>
       */
      public Wallet getWallet() {
        return wallet_ == null ? Wallet.getDefaultInstance() : wallet_;
      }
      /**
       * <pre>
       *用户账户
       * </pre>
       *
       * <code>optional .Wallet wallet = 2;</code>
       */
      public WalletOrBuilder getWalletOrBuilder() {
        return wallet_ == null ? Wallet.getDefaultInstance() : wallet_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasWallet()) {
          if (!getWallet().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getWallet());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getWallet());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof User)) {
          return super.equals(obj);
        }
        User other = (User) obj;
  
        boolean result = true;
        result = result && (hasId() == other.hasId());
        if (hasId()) {
          result = result && getId()
              .equals(other.getId());
        }
        result = result && (hasWallet() == other.hasWallet());
        if (hasWallet()) {
          result = result && getWallet()
              .equals(other.getWallet());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasId()) {
          hash = (37 * hash) + ID_FIELD_NUMBER;
          hash = (53 * hash) + getId().hashCode();
        }
        if (hasWallet()) {
          hash = (37 * hash) + WALLET_FIELD_NUMBER;
          hash = (53 * hash) + getWallet().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static User parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static User parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static User parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static User parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static User parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static User parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static User parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static User 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 User parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static User 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 User parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static User 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(User prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *用户结构
       * </pre>
       *
       * Protobuf type {@code User}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:User)
          UserOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_User_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_User_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  User.class, Builder.class);
        }
  
        // Construct using DeviceMessage.User.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getWalletFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          id_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          if (walletBuilder_ == null) {
            wallet_ = null;
          } else {
            walletBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_User_descriptor;
        }
  
        public User getDefaultInstanceForType() {
          return User.getDefaultInstance();
        }
  
        public User build() {
          User result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public User buildPartial() {
          User result = new User(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (walletBuilder_ == null) {
            result.wallet_ = wallet_;
          } else {
            result.wallet_ = walletBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof User) {
            return mergeFrom((User)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(User other) {
          if (other == User.getDefaultInstance()) return this;
          if (other.hasId()) {
            bitField0_ |= 0x00000001;
            id_ = other.id_;
            onChanged();
          }
          if (other.hasWallet()) {
            mergeWallet(other.getWallet());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasId()) {
            return false;
          }
          if (hasWallet()) {
            if (!getWallet().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          User parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (User) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Object id_ = "";
        /**
         * <pre>
         *用户id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *用户id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public String getId() {
          Object ref = id_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              id_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *用户id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public com.google.protobuf.ByteString
            getIdBytes() {
          Object ref = id_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            id_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *用户id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public Builder setId(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *用户id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *用户id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
  
        private Wallet wallet_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Wallet, Wallet.Builder, WalletOrBuilder> walletBuilder_;
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        public boolean hasWallet() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        public Wallet getWallet() {
          if (walletBuilder_ == null) {
            return wallet_ == null ? Wallet.getDefaultInstance() : wallet_;
          } else {
            return walletBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        public Builder setWallet(Wallet value) {
          if (walletBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            wallet_ = value;
            onChanged();
          } else {
            walletBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        public Builder setWallet(
            Wallet.Builder builderForValue) {
          if (walletBuilder_ == null) {
            wallet_ = builderForValue.build();
            onChanged();
          } else {
            walletBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        public Builder mergeWallet(Wallet value) {
          if (walletBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                wallet_ != null &&
                wallet_ != Wallet.getDefaultInstance()) {
              wallet_ =
                Wallet.newBuilder(wallet_).mergeFrom(value).buildPartial();
            } else {
              wallet_ = value;
            }
            onChanged();
          } else {
            walletBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        public Builder clearWallet() {
          if (walletBuilder_ == null) {
            wallet_ = null;
            onChanged();
          } else {
            walletBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        public Wallet.Builder getWalletBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getWalletFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        public WalletOrBuilder getWalletOrBuilder() {
          if (walletBuilder_ != null) {
            return walletBuilder_.getMessageOrBuilder();
          } else {
            return wallet_ == null ?
                Wallet.getDefaultInstance() : wallet_;
          }
        }
        /**
         * <pre>
         *用户账户
         * </pre>
         *
         * <code>optional .Wallet wallet = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Wallet, Wallet.Builder, WalletOrBuilder>
            getWalletFieldBuilder() {
          if (walletBuilder_ == null) {
            walletBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Wallet, Wallet.Builder, WalletOrBuilder>(
                    getWallet(),
                    getParentForChildren(),
                    isClean());
            wallet_ = null;
          }
          return walletBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:User)
      }
  
      // @@protoc_insertion_point(class_scope:User)
      private static final User DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new User();
      }
  
      public static User getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<User>
          PARSER = new com.google.protobuf.AbstractParser<User>() {
        public User parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new User(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<User> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<User> getParserForType() {
        return PARSER;
      }
  
      public User getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CoordinatesOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Coordinates)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>required double lng = 1;</code>
       */
      boolean hasLng();
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>required double lng = 1;</code>
       */
      double getLng();
  
      /**
       * <pre>
       *维度
       * </pre>
       *
       * <code>required double lat = 2;</code>
       */
      boolean hasLat();
      /**
       * <pre>
       *维度
       * </pre>
       *
       * <code>required double lat = 2;</code>
       */
      double getLat();
    }
    /**
     * <pre>
     *经纬度坐标
     * </pre>
     *
     * Protobuf type {@code Coordinates}
     */
    public  static final class Coordinates extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Coordinates)
        CoordinatesOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Coordinates.newBuilder() to construct.
      private Coordinates(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Coordinates() {
        lng_ = 0D;
        lat_ = 0D;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Coordinates(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 9: {
                bitField0_ |= 0x00000001;
                lng_ = input.readDouble();
                break;
              }
              case 17: {
                bitField0_ |= 0x00000002;
                lat_ = input.readDouble();
                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 DeviceMessage.internal_static_Coordinates_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_Coordinates_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Coordinates.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int LNG_FIELD_NUMBER = 1;
      private double lng_;
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>required double lng = 1;</code>
       */
      public boolean hasLng() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *经度
       * </pre>
       *
       * <code>required double lng = 1;</code>
       */
      public double getLng() {
        return lng_;
      }
  
      public static final int LAT_FIELD_NUMBER = 2;
      private double lat_;
      /**
       * <pre>
       *维度
       * </pre>
       *
       * <code>required double lat = 2;</code>
       */
      public boolean hasLat() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *维度
       * </pre>
       *
       * <code>required double lat = 2;</code>
       */
      public double getLat() {
        return lat_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasLng()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasLat()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeDouble(1, lng_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeDouble(2, lat_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(1, lng_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(2, lat_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof Coordinates)) {
          return super.equals(obj);
        }
        Coordinates other = (Coordinates) obj;
  
        boolean result = true;
        result = result && (hasLng() == other.hasLng());
        if (hasLng()) {
          result = result && (
              Double.doubleToLongBits(getLng())
              == Double.doubleToLongBits(
                  other.getLng()));
        }
        result = result && (hasLat() == other.hasLat());
        if (hasLat()) {
          result = result && (
              Double.doubleToLongBits(getLat())
              == Double.doubleToLongBits(
                  other.getLat()));
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasLng()) {
          hash = (37 * hash) + LNG_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              Double.doubleToLongBits(getLng()));
        }
        if (hasLat()) {
          hash = (37 * hash) + LAT_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              Double.doubleToLongBits(getLat()));
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static Coordinates parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Coordinates parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Coordinates parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Coordinates parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Coordinates parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Coordinates parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Coordinates parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Coordinates 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 Coordinates parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static Coordinates 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 Coordinates parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Coordinates 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(Coordinates prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *经纬度坐标
       * </pre>
       *
       * Protobuf type {@code Coordinates}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Coordinates)
          CoordinatesOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_Coordinates_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_Coordinates_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  Coordinates.class, Builder.class);
        }
  
        // Construct using DeviceMessage.Coordinates.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();
          lng_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000001);
          lat_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_Coordinates_descriptor;
        }
  
        public Coordinates getDefaultInstanceForType() {
          return Coordinates.getDefaultInstance();
        }
  
        public Coordinates build() {
          Coordinates result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public Coordinates buildPartial() {
          Coordinates result = new Coordinates(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.lng_ = lng_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.lat_ = lat_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof Coordinates) {
            return mergeFrom((Coordinates)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(Coordinates other) {
          if (other == Coordinates.getDefaultInstance()) return this;
          if (other.hasLng()) {
            setLng(other.getLng());
          }
          if (other.hasLat()) {
            setLat(other.getLat());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasLng()) {
            return false;
          }
          if (!hasLat()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          Coordinates parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (Coordinates) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private double lng_ ;
        /**
         * <pre>
         *经度
         * </pre>
         *
         * <code>required double lng = 1;</code>
         */
        public boolean hasLng() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *经度
         * </pre>
         *
         * <code>required double lng = 1;</code>
         */
        public double getLng() {
          return lng_;
        }
        /**
         * <pre>
         *经度
         * </pre>
         *
         * <code>required double lng = 1;</code>
         */
        public Builder setLng(double value) {
          bitField0_ |= 0x00000001;
          lng_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *经度
         * </pre>
         *
         * <code>required double lng = 1;</code>
         */
        public Builder clearLng() {
          bitField0_ = (bitField0_ & ~0x00000001);
          lng_ = 0D;
          onChanged();
          return this;
        }
  
        private double lat_ ;
        /**
         * <pre>
         *维度
         * </pre>
         *
         * <code>required double lat = 2;</code>
         */
        public boolean hasLat() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *维度
         * </pre>
         *
         * <code>required double lat = 2;</code>
         */
        public double getLat() {
          return lat_;
        }
        /**
         * <pre>
         *维度
         * </pre>
         *
         * <code>required double lat = 2;</code>
         */
        public Builder setLat(double value) {
          bitField0_ |= 0x00000002;
          lat_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *维度
         * </pre>
         *
         * <code>required double lat = 2;</code>
         */
        public Builder clearLat() {
          bitField0_ = (bitField0_ & ~0x00000002);
          lat_ = 0D;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Coordinates)
      }
  
      // @@protoc_insertion_point(class_scope:Coordinates)
      private static final Coordinates DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new Coordinates();
      }
  
      public static Coordinates getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<Coordinates>
          PARSER = new com.google.protobuf.AbstractParser<Coordinates>() {
        public Coordinates parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Coordinates(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Coordinates> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<Coordinates> getParserForType() {
        return PARSER;
      }
  
      public Coordinates getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface FullDateOrBuilder extends
        // @@protoc_insertion_point(interface_extends:FullDate)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required uint32 year = 1;</code>
       */
      boolean hasYear();
      /**
       * <code>required uint32 year = 1;</code>
       */
      int getYear();
  
      /**
       * <code>required uint32 month = 2;</code>
       */
      boolean hasMonth();
      /**
       * <code>required uint32 month = 2;</code>
       */
      int getMonth();
  
      /**
       * <code>required uint32 day = 3;</code>
       */
      boolean hasDay();
      /**
       * <code>required uint32 day = 3;</code>
       */
      int getDay();
  
      /**
       * <code>required uint32 hour = 4;</code>
       */
      boolean hasHour();
      /**
       * <code>required uint32 hour = 4;</code>
       */
      int getHour();
  
      /**
       * <code>required uint32 minute = 5;</code>
       */
      boolean hasMinute();
      /**
       * <code>required uint32 minute = 5;</code>
       */
      int getMinute();
  
      /**
       * <code>required uint32 sec = 6;</code>
       */
      boolean hasSec();
      /**
       * <code>required uint32 sec = 6;</code>
       */
      int getSec();
    }
    /**
     * <pre>
     *时间结构
     * </pre>
     *
     * Protobuf type {@code FullDate}
     */
    public  static final class FullDate extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:FullDate)
        FullDateOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use FullDate.newBuilder() to construct.
      private FullDate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private FullDate() {
        year_ = 0;
        month_ = 0;
        day_ = 0;
        hour_ = 0;
        minute_ = 0;
        sec_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private FullDate(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                year_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                month_ = input.readUInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                day_ = input.readUInt32();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                hour_ = input.readUInt32();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                minute_ = input.readUInt32();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                sec_ = input.readUInt32();
                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 DeviceMessage.internal_static_FullDate_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_FullDate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                FullDate.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int YEAR_FIELD_NUMBER = 1;
      private int year_;
      /**
       * <code>required uint32 year = 1;</code>
       */
      public boolean hasYear() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint32 year = 1;</code>
       */
      public int getYear() {
        return year_;
      }
  
      public static final int MONTH_FIELD_NUMBER = 2;
      private int month_;
      /**
       * <code>required uint32 month = 2;</code>
       */
      public boolean hasMonth() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint32 month = 2;</code>
       */
      public int getMonth() {
        return month_;
      }
  
      public static final int DAY_FIELD_NUMBER = 3;
      private int day_;
      /**
       * <code>required uint32 day = 3;</code>
       */
      public boolean hasDay() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required uint32 day = 3;</code>
       */
      public int getDay() {
        return day_;
      }
  
      public static final int HOUR_FIELD_NUMBER = 4;
      private int hour_;
      /**
       * <code>required uint32 hour = 4;</code>
       */
      public boolean hasHour() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required uint32 hour = 4;</code>
       */
      public int getHour() {
        return hour_;
      }
  
      public static final int MINUTE_FIELD_NUMBER = 5;
      private int minute_;
      /**
       * <code>required uint32 minute = 5;</code>
       */
      public boolean hasMinute() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required uint32 minute = 5;</code>
       */
      public int getMinute() {
        return minute_;
      }
  
      public static final int SEC_FIELD_NUMBER = 6;
      private int sec_;
      /**
       * <code>required uint32 sec = 6;</code>
       */
      public boolean hasSec() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required uint32 sec = 6;</code>
       */
      public int getSec() {
        return sec_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasYear()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasMonth()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasDay()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasHour()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasMinute()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasSec()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, year_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, month_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(3, day_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(4, hour_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeUInt32(5, minute_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeUInt32(6, sec_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, year_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, month_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, day_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, hour_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(5, minute_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, sec_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof FullDate)) {
          return super.equals(obj);
        }
        FullDate other = (FullDate) obj;
  
        boolean result = true;
        result = result && (hasYear() == other.hasYear());
        if (hasYear()) {
          result = result && (getYear()
              == other.getYear());
        }
        result = result && (hasMonth() == other.hasMonth());
        if (hasMonth()) {
          result = result && (getMonth()
              == other.getMonth());
        }
        result = result && (hasDay() == other.hasDay());
        if (hasDay()) {
          result = result && (getDay()
              == other.getDay());
        }
        result = result && (hasHour() == other.hasHour());
        if (hasHour()) {
          result = result && (getHour()
              == other.getHour());
        }
        result = result && (hasMinute() == other.hasMinute());
        if (hasMinute()) {
          result = result && (getMinute()
              == other.getMinute());
        }
        result = result && (hasSec() == other.hasSec());
        if (hasSec()) {
          result = result && (getSec()
              == other.getSec());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasYear()) {
          hash = (37 * hash) + YEAR_FIELD_NUMBER;
          hash = (53 * hash) + getYear();
        }
        if (hasMonth()) {
          hash = (37 * hash) + MONTH_FIELD_NUMBER;
          hash = (53 * hash) + getMonth();
        }
        if (hasDay()) {
          hash = (37 * hash) + DAY_FIELD_NUMBER;
          hash = (53 * hash) + getDay();
        }
        if (hasHour()) {
          hash = (37 * hash) + HOUR_FIELD_NUMBER;
          hash = (53 * hash) + getHour();
        }
        if (hasMinute()) {
          hash = (37 * hash) + MINUTE_FIELD_NUMBER;
          hash = (53 * hash) + getMinute();
        }
        if (hasSec()) {
          hash = (37 * hash) + SEC_FIELD_NUMBER;
          hash = (53 * hash) + getSec();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static FullDate parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static FullDate parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static FullDate parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static FullDate parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static FullDate parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static FullDate parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static FullDate parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static FullDate 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 FullDate parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static FullDate 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 FullDate parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static FullDate 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(FullDate prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *时间结构
       * </pre>
       *
       * Protobuf type {@code FullDate}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:FullDate)
          FullDateOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_FullDate_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_FullDate_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  FullDate.class, Builder.class);
        }
  
        // Construct using DeviceMessage.FullDate.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();
          year_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          month_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          day_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          hour_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          minute_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          sec_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_FullDate_descriptor;
        }
  
        public FullDate getDefaultInstanceForType() {
          return FullDate.getDefaultInstance();
        }
  
        public FullDate build() {
          FullDate result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public FullDate buildPartial() {
          FullDate result = new FullDate(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.year_ = year_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.month_ = month_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.day_ = day_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.hour_ = hour_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.minute_ = minute_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.sec_ = sec_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof FullDate) {
            return mergeFrom((FullDate)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(FullDate other) {
          if (other == FullDate.getDefaultInstance()) return this;
          if (other.hasYear()) {
            setYear(other.getYear());
          }
          if (other.hasMonth()) {
            setMonth(other.getMonth());
          }
          if (other.hasDay()) {
            setDay(other.getDay());
          }
          if (other.hasHour()) {
            setHour(other.getHour());
          }
          if (other.hasMinute()) {
            setMinute(other.getMinute());
          }
          if (other.hasSec()) {
            setSec(other.getSec());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasYear()) {
            return false;
          }
          if (!hasMonth()) {
            return false;
          }
          if (!hasDay()) {
            return false;
          }
          if (!hasHour()) {
            return false;
          }
          if (!hasMinute()) {
            return false;
          }
          if (!hasSec()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          FullDate parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (FullDate) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int year_ ;
        /**
         * <code>required uint32 year = 1;</code>
         */
        public boolean hasYear() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required uint32 year = 1;</code>
         */
        public int getYear() {
          return year_;
        }
        /**
         * <code>required uint32 year = 1;</code>
         */
        public Builder setYear(int value) {
          bitField0_ |= 0x00000001;
          year_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 year = 1;</code>
         */
        public Builder clearYear() {
          bitField0_ = (bitField0_ & ~0x00000001);
          year_ = 0;
          onChanged();
          return this;
        }
  
        private int month_ ;
        /**
         * <code>required uint32 month = 2;</code>
         */
        public boolean hasMonth() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required uint32 month = 2;</code>
         */
        public int getMonth() {
          return month_;
        }
        /**
         * <code>required uint32 month = 2;</code>
         */
        public Builder setMonth(int value) {
          bitField0_ |= 0x00000002;
          month_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 month = 2;</code>
         */
        public Builder clearMonth() {
          bitField0_ = (bitField0_ & ~0x00000002);
          month_ = 0;
          onChanged();
          return this;
        }
  
        private int day_ ;
        /**
         * <code>required uint32 day = 3;</code>
         */
        public boolean hasDay() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required uint32 day = 3;</code>
         */
        public int getDay() {
          return day_;
        }
        /**
         * <code>required uint32 day = 3;</code>
         */
        public Builder setDay(int value) {
          bitField0_ |= 0x00000004;
          day_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 day = 3;</code>
         */
        public Builder clearDay() {
          bitField0_ = (bitField0_ & ~0x00000004);
          day_ = 0;
          onChanged();
          return this;
        }
  
        private int hour_ ;
        /**
         * <code>required uint32 hour = 4;</code>
         */
        public boolean hasHour() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>required uint32 hour = 4;</code>
         */
        public int getHour() {
          return hour_;
        }
        /**
         * <code>required uint32 hour = 4;</code>
         */
        public Builder setHour(int value) {
          bitField0_ |= 0x00000008;
          hour_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 hour = 4;</code>
         */
        public Builder clearHour() {
          bitField0_ = (bitField0_ & ~0x00000008);
          hour_ = 0;
          onChanged();
          return this;
        }
  
        private int minute_ ;
        /**
         * <code>required uint32 minute = 5;</code>
         */
        public boolean hasMinute() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>required uint32 minute = 5;</code>
         */
        public int getMinute() {
          return minute_;
        }
        /**
         * <code>required uint32 minute = 5;</code>
         */
        public Builder setMinute(int value) {
          bitField0_ |= 0x00000010;
          minute_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 minute = 5;</code>
         */
        public Builder clearMinute() {
          bitField0_ = (bitField0_ & ~0x00000010);
          minute_ = 0;
          onChanged();
          return this;
        }
  
        private int sec_ ;
        /**
         * <code>required uint32 sec = 6;</code>
         */
        public boolean hasSec() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>required uint32 sec = 6;</code>
         */
        public int getSec() {
          return sec_;
        }
        /**
         * <code>required uint32 sec = 6;</code>
         */
        public Builder setSec(int value) {
          bitField0_ |= 0x00000020;
          sec_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 sec = 6;</code>
         */
        public Builder clearSec() {
          bitField0_ = (bitField0_ & ~0x00000020);
          sec_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:FullDate)
      }
  
      // @@protoc_insertion_point(class_scope:FullDate)
      private static final FullDate DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new FullDate();
      }
  
      public static FullDate getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<FullDate>
          PARSER = new com.google.protobuf.AbstractParser<FullDate>() {
        public FullDate parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new FullDate(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<FullDate> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<FullDate> getParserForType() {
        return PARSER;
      }
  
      public FullDate getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface RateOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Rate)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *尖电价
       * </pre>
       *
       * <code>required float top = 1;</code>
       */
      boolean hasTop();
      /**
       * <pre>
       *尖电价
       * </pre>
       *
       * <code>required float top = 1;</code>
       */
      float getTop();
  
      /**
       * <pre>
       *峰电价
       * </pre>
       *
       * <code>required float high = 2;</code>
       */
      boolean hasHigh();
      /**
       * <pre>
       *峰电价
       * </pre>
       *
       * <code>required float high = 2;</code>
       */
      float getHigh();
  
      /**
       * <pre>
       *平电价
       * </pre>
       *
       * <code>required float middle = 3;</code>
       */
      boolean hasMiddle();
      /**
       * <pre>
       *平电价
       * </pre>
       *
       * <code>required float middle = 3;</code>
       */
      float getMiddle();
  
      /**
       * <pre>
       *谷电价
       * </pre>
       *
       * <code>required float low = 4;</code>
       */
      boolean hasLow();
      /**
       * <pre>
       *谷电价
       * </pre>
       *
       * <code>required float low = 4;</code>
       */
      float getLow();
    }
    /**
     * <pre>
     *费率结构
     * </pre>
     *
     * Protobuf type {@code Rate}
     */
    public  static final class Rate extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Rate)
        RateOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rate.newBuilder() to construct.
      private Rate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rate() {
        top_ = 0F;
        high_ = 0F;
        middle_ = 0F;
        low_ = 0F;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rate(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 13: {
                bitField0_ |= 0x00000001;
                top_ = input.readFloat();
                break;
              }
              case 21: {
                bitField0_ |= 0x00000002;
                high_ = input.readFloat();
                break;
              }
              case 29: {
                bitField0_ |= 0x00000004;
                middle_ = input.readFloat();
                break;
              }
              case 37: {
                bitField0_ |= 0x00000008;
                low_ = input.readFloat();
                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 DeviceMessage.internal_static_Rate_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_Rate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Rate.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int TOP_FIELD_NUMBER = 1;
      private float top_;
      /**
       * <pre>
       *尖电价
       * </pre>
       *
       * <code>required float top = 1;</code>
       */
      public boolean hasTop() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *尖电价
       * </pre>
       *
       * <code>required float top = 1;</code>
       */
      public float getTop() {
        return top_;
      }
  
      public static final int HIGH_FIELD_NUMBER = 2;
      private float high_;
      /**
       * <pre>
       *峰电价
       * </pre>
       *
       * <code>required float high = 2;</code>
       */
      public boolean hasHigh() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *峰电价
       * </pre>
       *
       * <code>required float high = 2;</code>
       */
      public float getHigh() {
        return high_;
      }
  
      public static final int MIDDLE_FIELD_NUMBER = 3;
      private float middle_;
      /**
       * <pre>
       *平电价
       * </pre>
       *
       * <code>required float middle = 3;</code>
       */
      public boolean hasMiddle() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *平电价
       * </pre>
       *
       * <code>required float middle = 3;</code>
       */
      public float getMiddle() {
        return middle_;
      }
  
      public static final int LOW_FIELD_NUMBER = 4;
      private float low_;
      /**
       * <pre>
       *谷电价
       * </pre>
       *
       * <code>required float low = 4;</code>
       */
      public boolean hasLow() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       *谷电价
       * </pre>
       *
       * <code>required float low = 4;</code>
       */
      public float getLow() {
        return low_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasTop()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasHigh()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasMiddle()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasLow()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeFloat(1, top_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeFloat(2, high_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeFloat(3, middle_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeFloat(4, low_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(1, top_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(2, high_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(3, middle_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(4, low_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof Rate)) {
          return super.equals(obj);
        }
        Rate other = (Rate) obj;
  
        boolean result = true;
        result = result && (hasTop() == other.hasTop());
        if (hasTop()) {
          result = result && (
              Float.floatToIntBits(getTop())
              == Float.floatToIntBits(
                  other.getTop()));
        }
        result = result && (hasHigh() == other.hasHigh());
        if (hasHigh()) {
          result = result && (
              Float.floatToIntBits(getHigh())
              == Float.floatToIntBits(
                  other.getHigh()));
        }
        result = result && (hasMiddle() == other.hasMiddle());
        if (hasMiddle()) {
          result = result && (
              Float.floatToIntBits(getMiddle())
              == Float.floatToIntBits(
                  other.getMiddle()));
        }
        result = result && (hasLow() == other.hasLow());
        if (hasLow()) {
          result = result && (
              Float.floatToIntBits(getLow())
              == Float.floatToIntBits(
                  other.getLow()));
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTop()) {
          hash = (37 * hash) + TOP_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getTop());
        }
        if (hasHigh()) {
          hash = (37 * hash) + HIGH_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getHigh());
        }
        if (hasMiddle()) {
          hash = (37 * hash) + MIDDLE_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getMiddle());
        }
        if (hasLow()) {
          hash = (37 * hash) + LOW_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getLow());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static Rate parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Rate parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Rate parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Rate parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Rate parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Rate parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Rate parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Rate 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 Rate parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static Rate 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 Rate parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Rate 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(Rate prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *费率结构
       * </pre>
       *
       * Protobuf type {@code Rate}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Rate)
          RateOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_Rate_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_Rate_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  Rate.class, Builder.class);
        }
  
        // Construct using DeviceMessage.Rate.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();
          top_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000001);
          high_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000002);
          middle_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000004);
          low_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_Rate_descriptor;
        }
  
        public Rate getDefaultInstanceForType() {
          return Rate.getDefaultInstance();
        }
  
        public Rate build() {
          Rate result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public Rate buildPartial() {
          Rate result = new Rate(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.top_ = top_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.high_ = high_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.middle_ = middle_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.low_ = low_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof Rate) {
            return mergeFrom((Rate)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(Rate other) {
          if (other == Rate.getDefaultInstance()) return this;
          if (other.hasTop()) {
            setTop(other.getTop());
          }
          if (other.hasHigh()) {
            setHigh(other.getHigh());
          }
          if (other.hasMiddle()) {
            setMiddle(other.getMiddle());
          }
          if (other.hasLow()) {
            setLow(other.getLow());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasTop()) {
            return false;
          }
          if (!hasHigh()) {
            return false;
          }
          if (!hasMiddle()) {
            return false;
          }
          if (!hasLow()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          Rate parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (Rate) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private float top_ ;
        /**
         * <pre>
         *尖电价
         * </pre>
         *
         * <code>required float top = 1;</code>
         */
        public boolean hasTop() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *尖电价
         * </pre>
         *
         * <code>required float top = 1;</code>
         */
        public float getTop() {
          return top_;
        }
        /**
         * <pre>
         *尖电价
         * </pre>
         *
         * <code>required float top = 1;</code>
         */
        public Builder setTop(float value) {
          bitField0_ |= 0x00000001;
          top_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *尖电价
         * </pre>
         *
         * <code>required float top = 1;</code>
         */
        public Builder clearTop() {
          bitField0_ = (bitField0_ & ~0x00000001);
          top_ = 0F;
          onChanged();
          return this;
        }
  
        private float high_ ;
        /**
         * <pre>
         *峰电价
         * </pre>
         *
         * <code>required float high = 2;</code>
         */
        public boolean hasHigh() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *峰电价
         * </pre>
         *
         * <code>required float high = 2;</code>
         */
        public float getHigh() {
          return high_;
        }
        /**
         * <pre>
         *峰电价
         * </pre>
         *
         * <code>required float high = 2;</code>
         */
        public Builder setHigh(float value) {
          bitField0_ |= 0x00000002;
          high_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *峰电价
         * </pre>
         *
         * <code>required float high = 2;</code>
         */
        public Builder clearHigh() {
          bitField0_ = (bitField0_ & ~0x00000002);
          high_ = 0F;
          onChanged();
          return this;
        }
  
        private float middle_ ;
        /**
         * <pre>
         *平电价
         * </pre>
         *
         * <code>required float middle = 3;</code>
         */
        public boolean hasMiddle() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         *平电价
         * </pre>
         *
         * <code>required float middle = 3;</code>
         */
        public float getMiddle() {
          return middle_;
        }
        /**
         * <pre>
         *平电价
         * </pre>
         *
         * <code>required float middle = 3;</code>
         */
        public Builder setMiddle(float value) {
          bitField0_ |= 0x00000004;
          middle_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *平电价
         * </pre>
         *
         * <code>required float middle = 3;</code>
         */
        public Builder clearMiddle() {
          bitField0_ = (bitField0_ & ~0x00000004);
          middle_ = 0F;
          onChanged();
          return this;
        }
  
        private float low_ ;
        /**
         * <pre>
         *谷电价
         * </pre>
         *
         * <code>required float low = 4;</code>
         */
        public boolean hasLow() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <pre>
         *谷电价
         * </pre>
         *
         * <code>required float low = 4;</code>
         */
        public float getLow() {
          return low_;
        }
        /**
         * <pre>
         *谷电价
         * </pre>
         *
         * <code>required float low = 4;</code>
         */
        public Builder setLow(float value) {
          bitField0_ |= 0x00000008;
          low_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *谷电价
         * </pre>
         *
         * <code>required float low = 4;</code>
         */
        public Builder clearLow() {
          bitField0_ = (bitField0_ & ~0x00000008);
          low_ = 0F;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Rate)
      }
  
      // @@protoc_insertion_point(class_scope:Rate)
      private static final Rate DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new Rate();
      }
  
      public static Rate getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<Rate>
          PARSER = new com.google.protobuf.AbstractParser<Rate>() {
        public Rate parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Rate(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Rate> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<Rate> getParserForType() {
        return PARSER;
      }
  
      public Rate getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface OrderOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Order)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *订单id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      boolean hasId();
      /**
       * <pre>
       *订单id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      String getId();
      /**
       * <pre>
       *订单id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      com.google.protobuf.ByteString
          getIdBytes();
  
      /**
       * <pre>
       *订单号
       * </pre>
       *
       * <code>required string number = 2;</code>
       */
      boolean hasNumber();
      /**
       * <pre>
       *订单号
       * </pre>
       *
       * <code>required string number = 2;</code>
       */
      String getNumber();
      /**
       * <pre>
       *订单号
       * </pre>
       *
       * <code>required string number = 2;</code>
       */
      com.google.protobuf.ByteString
          getNumberBytes();
  
      /**
       * <pre>
       *订单第三方支付号
       * </pre>
       *
       * <code>optional string trade = 3;</code>
       */
      boolean hasTrade();
      /**
       * <pre>
       *订单第三方支付号
       * </pre>
       *
       * <code>optional string trade = 3;</code>
       */
      String getTrade();
      /**
       * <pre>
       *订单第三方支付号
       * </pre>
       *
       * <code>optional string trade = 3;</code>
       */
      com.google.protobuf.ByteString
          getTradeBytes();
    }
    /**
     * <pre>
     *订单结构
     * </pre>
     *
     * Protobuf type {@code Order}
     */
    public  static final class Order extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Order)
        OrderOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Order.newBuilder() to construct.
      private Order(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Order() {
        id_ = "";
        number_ = "";
        trade_ = "";
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Order(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                id_ = bs;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                number_ = bs;
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                trade_ = bs;
                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 DeviceMessage.internal_static_Order_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_Order_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Order.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int ID_FIELD_NUMBER = 1;
      private volatile Object id_;
      /**
       * <pre>
       *订单id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *订单id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      public String getId() {
        Object ref = id_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            id_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *订单id
       * </pre>
       *
       * <code>required string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int NUMBER_FIELD_NUMBER = 2;
      private volatile Object number_;
      /**
       * <pre>
       *订单号
       * </pre>
       *
       * <code>required string number = 2;</code>
       */
      public boolean hasNumber() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *订单号
       * </pre>
       *
       * <code>required string number = 2;</code>
       */
      public String getNumber() {
        Object ref = number_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            number_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *订单号
       * </pre>
       *
       * <code>required string number = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNumberBytes() {
        Object ref = number_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          number_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TRADE_FIELD_NUMBER = 3;
      private volatile Object trade_;
      /**
       * <pre>
       *订单第三方支付号
       * </pre>
       *
       * <code>optional string trade = 3;</code>
       */
      public boolean hasTrade() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *订单第三方支付号
       * </pre>
       *
       * <code>optional string trade = 3;</code>
       */
      public String getTrade() {
        Object ref = trade_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            trade_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *订单第三方支付号
       * </pre>
       *
       * <code>optional string trade = 3;</code>
       */
      public com.google.protobuf.ByteString
          getTradeBytes() {
        Object ref = trade_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          trade_ = 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;
  
        if (!hasId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasNumber()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, number_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, trade_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, number_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, trade_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof Order)) {
          return super.equals(obj);
        }
        Order other = (Order) obj;
  
        boolean result = true;
        result = result && (hasId() == other.hasId());
        if (hasId()) {
          result = result && getId()
              .equals(other.getId());
        }
        result = result && (hasNumber() == other.hasNumber());
        if (hasNumber()) {
          result = result && getNumber()
              .equals(other.getNumber());
        }
        result = result && (hasTrade() == other.hasTrade());
        if (hasTrade()) {
          result = result && getTrade()
              .equals(other.getTrade());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasId()) {
          hash = (37 * hash) + ID_FIELD_NUMBER;
          hash = (53 * hash) + getId().hashCode();
        }
        if (hasNumber()) {
          hash = (37 * hash) + NUMBER_FIELD_NUMBER;
          hash = (53 * hash) + getNumber().hashCode();
        }
        if (hasTrade()) {
          hash = (37 * hash) + TRADE_FIELD_NUMBER;
          hash = (53 * hash) + getTrade().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static Order parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Order parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Order parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Order parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Order parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Order parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Order parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Order 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 Order parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static Order 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 Order parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Order 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(Order prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *订单结构
       * </pre>
       *
       * Protobuf type {@code Order}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Order)
          OrderOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_Order_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_Order_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  Order.class, Builder.class);
        }
  
        // Construct using DeviceMessage.Order.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();
          id_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          number_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          trade_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_Order_descriptor;
        }
  
        public Order getDefaultInstanceForType() {
          return Order.getDefaultInstance();
        }
  
        public Order build() {
          Order result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public Order buildPartial() {
          Order result = new Order(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.number_ = number_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.trade_ = trade_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof Order) {
            return mergeFrom((Order)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(Order other) {
          if (other == Order.getDefaultInstance()) return this;
          if (other.hasId()) {
            bitField0_ |= 0x00000001;
            id_ = other.id_;
            onChanged();
          }
          if (other.hasNumber()) {
            bitField0_ |= 0x00000002;
            number_ = other.number_;
            onChanged();
          }
          if (other.hasTrade()) {
            bitField0_ |= 0x00000004;
            trade_ = other.trade_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasId()) {
            return false;
          }
          if (!hasNumber()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          Order parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (Order) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Object id_ = "";
        /**
         * <pre>
         *订单id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *订单id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public String getId() {
          Object ref = id_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              id_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *订单id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public com.google.protobuf.ByteString
            getIdBytes() {
          Object ref = id_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            id_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *订单id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public Builder setId(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *订单id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *订单id
         * </pre>
         *
         * <code>required string id = 1;</code>
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
  
        private Object number_ = "";
        /**
         * <pre>
         *订单号
         * </pre>
         *
         * <code>required string number = 2;</code>
         */
        public boolean hasNumber() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *订单号
         * </pre>
         *
         * <code>required string number = 2;</code>
         */
        public String getNumber() {
          Object ref = number_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              number_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *订单号
         * </pre>
         *
         * <code>required string number = 2;</code>
         */
        public com.google.protobuf.ByteString
            getNumberBytes() {
          Object ref = number_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            number_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *订单号
         * </pre>
         *
         * <code>required string number = 2;</code>
         */
        public Builder setNumber(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          number_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *订单号
         * </pre>
         *
         * <code>required string number = 2;</code>
         */
        public Builder clearNumber() {
          bitField0_ = (bitField0_ & ~0x00000002);
          number_ = getDefaultInstance().getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *订单号
         * </pre>
         *
         * <code>required string number = 2;</code>
         */
        public Builder setNumberBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          number_ = value;
          onChanged();
          return this;
        }
  
        private Object trade_ = "";
        /**
         * <pre>
         *订单第三方支付号
         * </pre>
         *
         * <code>optional string trade = 3;</code>
         */
        public boolean hasTrade() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         *订单第三方支付号
         * </pre>
         *
         * <code>optional string trade = 3;</code>
         */
        public String getTrade() {
          Object ref = trade_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              trade_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *订单第三方支付号
         * </pre>
         *
         * <code>optional string trade = 3;</code>
         */
        public com.google.protobuf.ByteString
            getTradeBytes() {
          Object ref = trade_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            trade_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *订单第三方支付号
         * </pre>
         *
         * <code>optional string trade = 3;</code>
         */
        public Builder setTrade(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          trade_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *订单第三方支付号
         * </pre>
         *
         * <code>optional string trade = 3;</code>
         */
        public Builder clearTrade() {
          bitField0_ = (bitField0_ & ~0x00000004);
          trade_ = getDefaultInstance().getTrade();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *订单第三方支付号
         * </pre>
         *
         * <code>optional string trade = 3;</code>
         */
        public Builder setTradeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          trade_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Order)
      }
  
      // @@protoc_insertion_point(class_scope:Order)
      private static final Order DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new Order();
      }
  
      public static Order getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<Order>
          PARSER = new com.google.protobuf.AbstractParser<Order>() {
        public Order parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Order(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Order> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<Order> getParserForType() {
        return PARSER;
      }
  
      public Order getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CarInfoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CarInfo)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *当前汽车电量百分比
       * </pre>
       *
       * <code>required float currentSOC = 1;</code>
       */
      boolean hasCurrentSOC();
      /**
       * <pre>
       *当前汽车电量百分比
       * </pre>
       *
       * <code>required float currentSOC = 1;</code>
       */
      float getCurrentSOC();
    }
    /**
     * <pre>
     *汽车信息
     * </pre>
     *
     * Protobuf type {@code CarInfo}
     */
    public  static final class CarInfo extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:CarInfo)
        CarInfoOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use CarInfo.newBuilder() to construct.
      private CarInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private CarInfo() {
        currentSOC_ = 0F;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private CarInfo(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 13: {
                bitField0_ |= 0x00000001;
                currentSOC_ = input.readFloat();
                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 DeviceMessage.internal_static_CarInfo_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_CarInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                CarInfo.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int CURRENTSOC_FIELD_NUMBER = 1;
      private float currentSOC_;
      /**
       * <pre>
       *当前汽车电量百分比
       * </pre>
       *
       * <code>required float currentSOC = 1;</code>
       */
      public boolean hasCurrentSOC() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *当前汽车电量百分比
       * </pre>
       *
       * <code>required float currentSOC = 1;</code>
       */
      public float getCurrentSOC() {
        return currentSOC_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCurrentSOC()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeFloat(1, currentSOC_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(1, currentSOC_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof CarInfo)) {
          return super.equals(obj);
        }
        CarInfo other = (CarInfo) obj;
  
        boolean result = true;
        result = result && (hasCurrentSOC() == other.hasCurrentSOC());
        if (hasCurrentSOC()) {
          result = result && (
              Float.floatToIntBits(getCurrentSOC())
              == Float.floatToIntBits(
                  other.getCurrentSOC()));
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCurrentSOC()) {
          hash = (37 * hash) + CURRENTSOC_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getCurrentSOC());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static CarInfo parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static CarInfo parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static CarInfo parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static CarInfo parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static CarInfo parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static CarInfo parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static CarInfo parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static CarInfo 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 CarInfo parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static CarInfo 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 CarInfo parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static CarInfo 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(CarInfo prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *汽车信息
       * </pre>
       *
       * Protobuf type {@code CarInfo}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:CarInfo)
          CarInfoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_CarInfo_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_CarInfo_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  CarInfo.class, Builder.class);
        }
  
        // Construct using DeviceMessage.CarInfo.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();
          currentSOC_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_CarInfo_descriptor;
        }
  
        public CarInfo getDefaultInstanceForType() {
          return CarInfo.getDefaultInstance();
        }
  
        public CarInfo build() {
          CarInfo result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public CarInfo buildPartial() {
          CarInfo result = new CarInfo(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.currentSOC_ = currentSOC_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof CarInfo) {
            return mergeFrom((CarInfo)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(CarInfo other) {
          if (other == CarInfo.getDefaultInstance()) return this;
          if (other.hasCurrentSOC()) {
            setCurrentSOC(other.getCurrentSOC());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasCurrentSOC()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          CarInfo parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (CarInfo) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private float currentSOC_ ;
        /**
         * <pre>
         *当前汽车电量百分比
         * </pre>
         *
         * <code>required float currentSOC = 1;</code>
         */
        public boolean hasCurrentSOC() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *当前汽车电量百分比
         * </pre>
         *
         * <code>required float currentSOC = 1;</code>
         */
        public float getCurrentSOC() {
          return currentSOC_;
        }
        /**
         * <pre>
         *当前汽车电量百分比
         * </pre>
         *
         * <code>required float currentSOC = 1;</code>
         */
        public Builder setCurrentSOC(float value) {
          bitField0_ |= 0x00000001;
          currentSOC_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *当前汽车电量百分比
         * </pre>
         *
         * <code>required float currentSOC = 1;</code>
         */
        public Builder clearCurrentSOC() {
          bitField0_ = (bitField0_ & ~0x00000001);
          currentSOC_ = 0F;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:CarInfo)
      }
  
      // @@protoc_insertion_point(class_scope:CarInfo)
      private static final CarInfo DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new CarInfo();
      }
  
      public static CarInfo getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<CarInfo>
          PARSER = new com.google.protobuf.AbstractParser<CarInfo>() {
        public CarInfo parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new CarInfo(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<CarInfo> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<CarInfo> getParserForType() {
        return PARSER;
      }
  
      public CarInfo getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DeviceInfoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:DeviceInfo)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *设备类型
       * </pre>
       *
       * <code>required .DeviceInfo.DeviceType type = 1;</code>
       */
      boolean hasType();
      /**
       * <pre>
       *设备类型
       * </pre>
       *
       * <code>required .DeviceInfo.DeviceType type = 1;</code>
       */
      DeviceInfo.DeviceType getType();
  
      /**
       * <pre>
       *功率
       * </pre>
       *
       * <code>required float power = 2;</code>
       */
      boolean hasPower();
      /**
       * <pre>
       *功率
       * </pre>
       *
       * <code>required float power = 2;</code>
       */
      float getPower();
  
      /**
       * <pre>
       *电表电量数
       * </pre>
       *
       * <code>required float ammeter = 3;</code>
       */
      boolean hasAmmeter();
      /**
       * <pre>
       *电表电量数
       * </pre>
       *
       * <code>required float ammeter = 3;</code>
       */
      float getAmmeter();
  
      /**
       * <pre>
       *交流电压
       * </pre>
       *
       * <code>optional float alternatingvoltage = 4;</code>
       */
      boolean hasAlternatingvoltage();
      /**
       * <pre>
       *交流电压
       * </pre>
       *
       * <code>optional float alternatingvoltage = 4;</code>
       */
      float getAlternatingvoltage();
  
      /**
       * <pre>
       *直流电压
       * </pre>
       *
       * <code>optional float directvoltage = 5;</code>
       */
      boolean hasDirectvoltage();
      /**
       * <pre>
       *直流电压
       * </pre>
       *
       * <code>optional float directvoltage = 5;</code>
       */
      float getDirectvoltage();
  
      /**
       * <pre>
       *交流电流
       * </pre>
       *
       * <code>optional float alternatingelectricity = 6;</code>
       */
      boolean hasAlternatingelectricity();
      /**
       * <pre>
       *交流电流
       * </pre>
       *
       * <code>optional float alternatingelectricity = 6;</code>
       */
      float getAlternatingelectricity();
  
      /**
       * <pre>
       *直流电流
       * </pre>
       *
       * <code>optional float directelectricity = 7;</code>
       */
      boolean hasDirectelectricity();
      /**
       * <pre>
       *直流电流
       * </pre>
       *
       * <code>optional float directelectricity = 7;</code>
       */
      float getDirectelectricity();
  
      /**
       * <pre>
       *电桩状态
       * </pre>
       *
       * <code>optional .DeviceInfo.Status status = 8;</code>
       */
      boolean hasStatus();
      /**
       * <pre>
       *电桩状态
       * </pre>
       *
       * <code>optional .DeviceInfo.Status status = 8;</code>
       */
      DeviceInfo.Status getStatus();
  
      /**
       * <pre>
       *停止充电原因
       * </pre>
       *
       * <code>optional .DeviceInfo.StopChargeCause stopchargecause = 9;</code>
       */
      boolean hasStopchargecause();
      /**
       * <pre>
       *停止充电原因
       * </pre>
       *
       * <code>optional .DeviceInfo.StopChargeCause stopchargecause = 9;</code>
       */
      DeviceInfo.StopChargeCause getStopchargecause();
  
      /**
       * <pre>
       *故障
       * </pre>
       *
       * <code>repeated .DeviceInfo.Fault faults = 10;</code>
       */
      java.util.List<DeviceInfo.Fault> getFaultsList();
      /**
       * <pre>
       *故障
       * </pre>
       *
       * <code>repeated .DeviceInfo.Fault faults = 10;</code>
       */
      int getFaultsCount();
      /**
       * <pre>
       *故障
       * </pre>
       *
       * <code>repeated .DeviceInfo.Fault faults = 10;</code>
       */
      DeviceInfo.Fault getFaults(int index);
    }
    /**
     * <pre>
     *设备信息
     * </pre>
     *
     * Protobuf type {@code DeviceInfo}
     */
    public  static final class DeviceInfo extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:DeviceInfo)
        DeviceInfoOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use DeviceInfo.newBuilder() to construct.
      private DeviceInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DeviceInfo() {
        type_ = 0;
        power_ = 0F;
        ammeter_ = 0F;
        alternatingvoltage_ = 0F;
        directvoltage_ = 0F;
        alternatingelectricity_ = 0F;
        directelectricity_ = 0F;
        status_ = 0;
        stopchargecause_ = 0;
        faults_ = java.util.Collections.emptyList();
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DeviceInfo(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                DeviceType value = DeviceType.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  type_ = rawValue;
                }
                break;
              }
              case 21: {
                bitField0_ |= 0x00000002;
                power_ = input.readFloat();
                break;
              }
              case 29: {
                bitField0_ |= 0x00000004;
                ammeter_ = input.readFloat();
                break;
              }
              case 37: {
                bitField0_ |= 0x00000008;
                alternatingvoltage_ = input.readFloat();
                break;
              }
              case 45: {
                bitField0_ |= 0x00000010;
                directvoltage_ = input.readFloat();
                break;
              }
              case 53: {
                bitField0_ |= 0x00000020;
                alternatingelectricity_ = input.readFloat();
                break;
              }
              case 61: {
                bitField0_ |= 0x00000040;
                directelectricity_ = input.readFloat();
                break;
              }
              case 64: {
                int rawValue = input.readEnum();
                Status value = Status.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(8, rawValue);
                } else {
                  bitField0_ |= 0x00000080;
                  status_ = rawValue;
                }
                break;
              }
              case 72: {
                int rawValue = input.readEnum();
                StopChargeCause value = StopChargeCause.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(9, rawValue);
                } else {
                  bitField0_ |= 0x00000100;
                  stopchargecause_ = rawValue;
                }
                break;
              }
              case 80: {
                int rawValue = input.readEnum();
                Fault value = Fault.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(10, rawValue);
                } else {
                  if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                    faults_ = new java.util.ArrayList<Integer>();
                    mutable_bitField0_ |= 0x00000200;
                  }
                  faults_.add(rawValue);
                }
                break;
              }
              case 82: {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while(input.getBytesUntilLimit() > 0) {
                  int rawValue = input.readEnum();
                  Fault value = Fault.valueOf(rawValue);
                  if (value == null) {
                    unknownFields.mergeVarintField(10, rawValue);
                  } else {
                    if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                      faults_ = new java.util.ArrayList<Integer>();
                      mutable_bitField0_ |= 0x00000200;
                    }
                    faults_.add(rawValue);
                  }
                }
                input.popLimit(oldLimit);
                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 {
          if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
            faults_ = java.util.Collections.unmodifiableList(faults_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DeviceMessage.internal_static_DeviceInfo_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_DeviceInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DeviceInfo.class, Builder.class);
      }
  
      /**
       * Protobuf enum {@code DeviceInfo.DeviceType}
       */
      public enum DeviceType
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         *单项交流
         * </pre>
         *
         * <code>SING_ALTERNATING = 0;</code>
         */
        SING_ALTERNATING(0),
        /**
         * <pre>
         *三项交流
         * </pre>
         *
         * <code>THREE_ALTERNATING = 1;</code>
         */
        THREE_ALTERNATING(1),
        /**
         * <pre>
         *直流
         * </pre>
         *
         * <code>DIRECT = 2;</code>
         */
        DIRECT(2),
        /**
         * <pre>
         *混合
         * </pre>
         *
         * <code>MIXTURE = 3;</code>
         */
        MIXTURE(3),
        ;
  
        /**
         * <pre>
         *单项交流
         * </pre>
         *
         * <code>SING_ALTERNATING = 0;</code>
         */
        public static final int SING_ALTERNATING_VALUE = 0;
        /**
         * <pre>
         *三项交流
         * </pre>
         *
         * <code>THREE_ALTERNATING = 1;</code>
         */
        public static final int THREE_ALTERNATING_VALUE = 1;
        /**
         * <pre>
         *直流
         * </pre>
         *
         * <code>DIRECT = 2;</code>
         */
        public static final int DIRECT_VALUE = 2;
        /**
         * <pre>
         *混合
         * </pre>
         *
         * <code>MIXTURE = 3;</code>
         */
        public static final int MIXTURE_VALUE = 3;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @Deprecated
        public static DeviceType valueOf(int value) {
          return forNumber(value);
        }
  
        public static DeviceType forNumber(int value) {
          switch (value) {
            case 0: return SING_ALTERNATING;
            case 1: return THREE_ALTERNATING;
            case 2: return DIRECT;
            case 3: return MIXTURE;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<DeviceType>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            DeviceType> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<DeviceType>() {
                public DeviceType findValueByNumber(int number) {
                  return DeviceType.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 DeviceInfo.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final DeviceType[] VALUES = values();
  
        public static DeviceType valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private DeviceType(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:DeviceInfo.DeviceType)
      }
  
      /**
       * Protobuf enum {@code DeviceInfo.Status}
       */
      public enum Status
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         *预约
         * </pre>
         *
         * <code>RESERVE = 0;</code>
         */
        RESERVE(0),
        /**
         * <pre>
         *待机
         * </pre>
         *
         * <code>STANDBY = 1;</code>
         */
        STANDBY(1),
        /**
         * <pre>
         *离线
         * </pre>
         *
         * <code>OFFLINE = 2;</code>
         */
        OFFLINE(2),
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>FAULT = 3;</code>
         */
        FAULT(3),
        /**
         * <pre>
         *充电
         * </pre>
         *
         * <code>CHARGE = 4;</code>
         */
        CHARGE(4),
        /**
         * <pre>
         *停止充电
         * </pre>
         *
         * <code>STOP = 5;</code>
         */
        STOP(5),
        /**
         * <pre>
         *暂停
         * </pre>
         *
         * <code>PAUSE = 6;</code>
         */
        PAUSE(6),
        /**
         * <pre>
         *维护
         * </pre>
         *
         * <code>MAINTAIN = 7;</code>
         */
        MAINTAIN(7),
        /**
         * <pre>
         *测试
         * </pre>
         *
         * <code>TEST = 8;</code>
         */
        TEST(8),
        ;
  
        /**
         * <pre>
         *预约
         * </pre>
         *
         * <code>RESERVE = 0;</code>
         */
        public static final int RESERVE_VALUE = 0;
        /**
         * <pre>
         *待机
         * </pre>
         *
         * <code>STANDBY = 1;</code>
         */
        public static final int STANDBY_VALUE = 1;
        /**
         * <pre>
         *离线
         * </pre>
         *
         * <code>OFFLINE = 2;</code>
         */
        public static final int OFFLINE_VALUE = 2;
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>FAULT = 3;</code>
         */
        public static final int FAULT_VALUE = 3;
        /**
         * <pre>
         *充电
         * </pre>
         *
         * <code>CHARGE = 4;</code>
         */
        public static final int CHARGE_VALUE = 4;
        /**
         * <pre>
         *停止充电
         * </pre>
         *
         * <code>STOP = 5;</code>
         */
        public static final int STOP_VALUE = 5;
        /**
         * <pre>
         *暂停
         * </pre>
         *
         * <code>PAUSE = 6;</code>
         */
        public static final int PAUSE_VALUE = 6;
        /**
         * <pre>
         *维护
         * </pre>
         *
         * <code>MAINTAIN = 7;</code>
         */
        public static final int MAINTAIN_VALUE = 7;
        /**
         * <pre>
         *测试
         * </pre>
         *
         * <code>TEST = 8;</code>
         */
        public static final int TEST_VALUE = 8;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @Deprecated
        public static Status valueOf(int value) {
          return forNumber(value);
        }
  
        public static Status forNumber(int value) {
          switch (value) {
            case 0: return RESERVE;
            case 1: return STANDBY;
            case 2: return OFFLINE;
            case 3: return FAULT;
            case 4: return CHARGE;
            case 5: return STOP;
            case 6: return PAUSE;
            case 7: return MAINTAIN;
            case 8: return TEST;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<Status>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            Status> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<Status>() {
                public Status findValueByNumber(int number) {
                  return Status.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 DeviceInfo.getDescriptor().getEnumTypes().get(1);
        }
  
        private static final Status[] VALUES = values();
  
        public static Status valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private Status(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:DeviceInfo.Status)
      }
  
      /**
       * Protobuf enum {@code DeviceInfo.StopChargeCause}
       */
      public enum StopChargeCause
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         *指定时间到停止
         * </pre>
         *
         * <code>TIME_OUT = 0;</code>
         */
        TIME_OUT(0),
        /**
         * <pre>
         *指定电量到停止
         * </pre>
         *
         * <code>ELECTRIC_QUANTITY = 1;</code>
         */
        ELECTRIC_QUANTITY(1),
        /**
         * <pre>
         *指定费用到停止
         * </pre>
         *
         * <code>COST = 2;</code>
         */
        COST(2),
        /**
         * <pre>
         *汽车主动停止
         * </pre>
         *
         * <code>CAR_STOP = 3;</code>
         */
        CAR_STOP(3),
        /**
         * <pre>
         *插头被拔出
         * </pre>
         *
         * <code>GUN_PULL = 4;</code>
         */
        GUN_PULL(4),
        ;
  
        /**
         * <pre>
         *指定时间到停止
         * </pre>
         *
         * <code>TIME_OUT = 0;</code>
         */
        public static final int TIME_OUT_VALUE = 0;
        /**
         * <pre>
         *指定电量到停止
         * </pre>
         *
         * <code>ELECTRIC_QUANTITY = 1;</code>
         */
        public static final int ELECTRIC_QUANTITY_VALUE = 1;
        /**
         * <pre>
         *指定费用到停止
         * </pre>
         *
         * <code>COST = 2;</code>
         */
        public static final int COST_VALUE = 2;
        /**
         * <pre>
         *汽车主动停止
         * </pre>
         *
         * <code>CAR_STOP = 3;</code>
         */
        public static final int CAR_STOP_VALUE = 3;
        /**
         * <pre>
         *插头被拔出
         * </pre>
         *
         * <code>GUN_PULL = 4;</code>
         */
        public static final int GUN_PULL_VALUE = 4;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @Deprecated
        public static StopChargeCause valueOf(int value) {
          return forNumber(value);
        }
  
        public static StopChargeCause forNumber(int value) {
          switch (value) {
            case 0: return TIME_OUT;
            case 1: return ELECTRIC_QUANTITY;
            case 2: return COST;
            case 3: return CAR_STOP;
            case 4: return GUN_PULL;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<StopChargeCause>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            StopChargeCause> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<StopChargeCause>() {
                public StopChargeCause findValueByNumber(int number) {
                  return StopChargeCause.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 DeviceInfo.getDescriptor().getEnumTypes().get(2);
        }
  
        private static final StopChargeCause[] VALUES = values();
  
        public static StopChargeCause valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private StopChargeCause(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:DeviceInfo.StopChargeCause)
      }
  
      /**
       * Protobuf enum {@code DeviceInfo.Fault}
       */
      public enum Fault
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         *读卡器故障
         * </pre>
         *
         * <code>CARD = 0;</code>
         */
        CARD(0),
        /**
         * <pre>
         *电表故障
         * </pre>
         *
         * <code>AMMETER = 1;</code>
         */
        AMMETER(1),
        /**
         * <pre>
         *急停故障
         * </pre>
         *
         * <code>BREAK = 2;</code>
         */
        BREAK(2),
        /**
         * <pre>
         *过压故障
         * </pre>
         *
         * <code>OVER_VOLTAGE = 3;</code>
         */
        OVER_VOLTAGE(3),
        /**
         * <pre>
         *欠压故障
         * </pre>
         *
         * <code>UNDER_VOLTAGE = 4;</code>
         */
        UNDER_VOLTAGE(4),
        /**
         * <pre>
         *过流故障
         * </pre>
         *
         * <code>OVER_CURRENT = 5;</code>
         */
        OVER_CURRENT(5),
        /**
         * <pre>
         *充电机故障
         * </pre>
         *
         * <code>BATTERY_CHARGER = 6;</code>
         */
        BATTERY_CHARGER(6),
        /**
         * <pre>
         *其他未知故障
         * </pre>
         *
         * <code>UNKNOWN = 7;</code>
         */
        UNKNOWN(7),
        ;
  
        /**
         * <pre>
         *读卡器故障
         * </pre>
         *
         * <code>CARD = 0;</code>
         */
        public static final int CARD_VALUE = 0;
        /**
         * <pre>
         *电表故障
         * </pre>
         *
         * <code>AMMETER = 1;</code>
         */
        public static final int AMMETER_VALUE = 1;
        /**
         * <pre>
         *急停故障
         * </pre>
         *
         * <code>BREAK = 2;</code>
         */
        public static final int BREAK_VALUE = 2;
        /**
         * <pre>
         *过压故障
         * </pre>
         *
         * <code>OVER_VOLTAGE = 3;</code>
         */
        public static final int OVER_VOLTAGE_VALUE = 3;
        /**
         * <pre>
         *欠压故障
         * </pre>
         *
         * <code>UNDER_VOLTAGE = 4;</code>
         */
        public static final int UNDER_VOLTAGE_VALUE = 4;
        /**
         * <pre>
         *过流故障
         * </pre>
         *
         * <code>OVER_CURRENT = 5;</code>
         */
        public static final int OVER_CURRENT_VALUE = 5;
        /**
         * <pre>
         *充电机故障
         * </pre>
         *
         * <code>BATTERY_CHARGER = 6;</code>
         */
        public static final int BATTERY_CHARGER_VALUE = 6;
        /**
         * <pre>
         *其他未知故障
         * </pre>
         *
         * <code>UNKNOWN = 7;</code>
         */
        public static final int UNKNOWN_VALUE = 7;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @Deprecated
        public static Fault valueOf(int value) {
          return forNumber(value);
        }
  
        public static Fault forNumber(int value) {
          switch (value) {
            case 0: return CARD;
            case 1: return AMMETER;
            case 2: return BREAK;
            case 3: return OVER_VOLTAGE;
            case 4: return UNDER_VOLTAGE;
            case 5: return OVER_CURRENT;
            case 6: return BATTERY_CHARGER;
            case 7: return UNKNOWN;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<Fault>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            Fault> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<Fault>() {
                public Fault findValueByNumber(int number) {
                  return Fault.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 DeviceInfo.getDescriptor().getEnumTypes().get(3);
        }
  
        private static final Fault[] VALUES = values();
  
        public static Fault valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private Fault(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:DeviceInfo.Fault)
      }
  
      private int bitField0_;
      public static final int TYPE_FIELD_NUMBER = 1;
      private int type_;
      /**
       * <pre>
       *设备类型
       * </pre>
       *
       * <code>required .DeviceInfo.DeviceType type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *设备类型
       * </pre>
       *
       * <code>required .DeviceInfo.DeviceType type = 1;</code>
       */
      public DeviceType getType() {
        DeviceType result = DeviceType.valueOf(type_);
        return result == null ? DeviceType.SING_ALTERNATING : result;
      }
  
      public static final int POWER_FIELD_NUMBER = 2;
      private float power_;
      /**
       * <pre>
       *功率
       * </pre>
       *
       * <code>required float power = 2;</code>
       */
      public boolean hasPower() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *功率
       * </pre>
       *
       * <code>required float power = 2;</code>
       */
      public float getPower() {
        return power_;
      }
  
      public static final int AMMETER_FIELD_NUMBER = 3;
      private float ammeter_;
      /**
       * <pre>
       *电表电量数
       * </pre>
       *
       * <code>required float ammeter = 3;</code>
       */
      public boolean hasAmmeter() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *电表电量数
       * </pre>
       *
       * <code>required float ammeter = 3;</code>
       */
      public float getAmmeter() {
        return ammeter_;
      }
  
      public static final int ALTERNATINGVOLTAGE_FIELD_NUMBER = 4;
      private float alternatingvoltage_;
      /**
       * <pre>
       *交流电压
       * </pre>
       *
       * <code>optional float alternatingvoltage = 4;</code>
       */
      public boolean hasAlternatingvoltage() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       *交流电压
       * </pre>
       *
       * <code>optional float alternatingvoltage = 4;</code>
       */
      public float getAlternatingvoltage() {
        return alternatingvoltage_;
      }
  
      public static final int DIRECTVOLTAGE_FIELD_NUMBER = 5;
      private float directvoltage_;
      /**
       * <pre>
       *直流电压
       * </pre>
       *
       * <code>optional float directvoltage = 5;</code>
       */
      public boolean hasDirectvoltage() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <pre>
       *直流电压
       * </pre>
       *
       * <code>optional float directvoltage = 5;</code>
       */
      public float getDirectvoltage() {
        return directvoltage_;
      }
  
      public static final int ALTERNATINGELECTRICITY_FIELD_NUMBER = 6;
      private float alternatingelectricity_;
      /**
       * <pre>
       *交流电流
       * </pre>
       *
       * <code>optional float alternatingelectricity = 6;</code>
       */
      public boolean hasAlternatingelectricity() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <pre>
       *交流电流
       * </pre>
       *
       * <code>optional float alternatingelectricity = 6;</code>
       */
      public float getAlternatingelectricity() {
        return alternatingelectricity_;
      }
  
      public static final int DIRECTELECTRICITY_FIELD_NUMBER = 7;
      private float directelectricity_;
      /**
       * <pre>
       *直流电流
       * </pre>
       *
       * <code>optional float directelectricity = 7;</code>
       */
      public boolean hasDirectelectricity() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <pre>
       *直流电流
       * </pre>
       *
       * <code>optional float directelectricity = 7;</code>
       */
      public float getDirectelectricity() {
        return directelectricity_;
      }
  
      public static final int STATUS_FIELD_NUMBER = 8;
      private int status_;
      /**
       * <pre>
       *电桩状态
       * </pre>
       *
       * <code>optional .DeviceInfo.Status status = 8;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <pre>
       *电桩状态
       * </pre>
       *
       * <code>optional .DeviceInfo.Status status = 8;</code>
       */
      public Status getStatus() {
        Status result = Status.valueOf(status_);
        return result == null ? Status.RESERVE : result;
      }
  
      public static final int STOPCHARGECAUSE_FIELD_NUMBER = 9;
      private int stopchargecause_;
      /**
       * <pre>
       *停止充电原因
       * </pre>
       *
       * <code>optional .DeviceInfo.StopChargeCause stopchargecause = 9;</code>
       */
      public boolean hasStopchargecause() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <pre>
       *停止充电原因
       * </pre>
       *
       * <code>optional .DeviceInfo.StopChargeCause stopchargecause = 9;</code>
       */
      public StopChargeCause getStopchargecause() {
        StopChargeCause result = StopChargeCause.valueOf(stopchargecause_);
        return result == null ? StopChargeCause.TIME_OUT : result;
      }
  
      public static final int FAULTS_FIELD_NUMBER = 10;
      private java.util.List<Integer> faults_;
      private static final com.google.protobuf.Internal.ListAdapter.Converter<
          Integer, Fault> faults_converter_ =
              new com.google.protobuf.Internal.ListAdapter.Converter<
                  Integer, Fault>() {
                public Fault convert(Integer from) {
                  Fault result = Fault.valueOf(from);
                  return result == null ? Fault.CARD : result;
                }
              };
      /**
       * <pre>
       *故障
       * </pre>
       *
       * <code>repeated .DeviceInfo.Fault faults = 10;</code>
       */
      public java.util.List<Fault> getFaultsList() {
        return new com.google.protobuf.Internal.ListAdapter<
            Integer, Fault>(faults_, faults_converter_);
      }
      /**
       * <pre>
       *故障
       * </pre>
       *
       * <code>repeated .DeviceInfo.Fault faults = 10;</code>
       */
      public int getFaultsCount() {
        return faults_.size();
      }
      /**
       * <pre>
       *故障
       * </pre>
       *
       * <code>repeated .DeviceInfo.Fault faults = 10;</code>
       */
      public Fault getFaults(int index) {
        return faults_converter_.convert(faults_.get(index));
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasPower()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasAmmeter()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, type_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeFloat(2, power_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeFloat(3, ammeter_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeFloat(4, alternatingvoltage_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeFloat(5, directvoltage_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeFloat(6, alternatingelectricity_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeFloat(7, directelectricity_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeEnum(8, status_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeEnum(9, stopchargecause_);
        }
        for (int i = 0; i < faults_.size(); i++) {
          output.writeEnum(10, faults_.get(i));
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, type_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(2, power_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(3, ammeter_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(4, alternatingvoltage_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(5, directvoltage_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(6, alternatingelectricity_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(7, directelectricity_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(8, status_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(9, stopchargecause_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < faults_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeEnumSizeNoTag(faults_.get(i));
          }
          size += dataSize;
          size += 1 * faults_.size();
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof DeviceInfo)) {
          return super.equals(obj);
        }
        DeviceInfo other = (DeviceInfo) obj;
  
        boolean result = true;
        result = result && (hasType() == other.hasType());
        if (hasType()) {
          result = result && type_ == other.type_;
        }
        result = result && (hasPower() == other.hasPower());
        if (hasPower()) {
          result = result && (
              Float.floatToIntBits(getPower())
              == Float.floatToIntBits(
                  other.getPower()));
        }
        result = result && (hasAmmeter() == other.hasAmmeter());
        if (hasAmmeter()) {
          result = result && (
              Float.floatToIntBits(getAmmeter())
              == Float.floatToIntBits(
                  other.getAmmeter()));
        }
        result = result && (hasAlternatingvoltage() == other.hasAlternatingvoltage());
        if (hasAlternatingvoltage()) {
          result = result && (
              Float.floatToIntBits(getAlternatingvoltage())
              == Float.floatToIntBits(
                  other.getAlternatingvoltage()));
        }
        result = result && (hasDirectvoltage() == other.hasDirectvoltage());
        if (hasDirectvoltage()) {
          result = result && (
              Float.floatToIntBits(getDirectvoltage())
              == Float.floatToIntBits(
                  other.getDirectvoltage()));
        }
        result = result && (hasAlternatingelectricity() == other.hasAlternatingelectricity());
        if (hasAlternatingelectricity()) {
          result = result && (
              Float.floatToIntBits(getAlternatingelectricity())
              == Float.floatToIntBits(
                  other.getAlternatingelectricity()));
        }
        result = result && (hasDirectelectricity() == other.hasDirectelectricity());
        if (hasDirectelectricity()) {
          result = result && (
              Float.floatToIntBits(getDirectelectricity())
              == Float.floatToIntBits(
                  other.getDirectelectricity()));
        }
        result = result && (hasStatus() == other.hasStatus());
        if (hasStatus()) {
          result = result && status_ == other.status_;
        }
        result = result && (hasStopchargecause() == other.hasStopchargecause());
        if (hasStopchargecause()) {
          result = result && stopchargecause_ == other.stopchargecause_;
        }
        result = result && faults_.equals(other.faults_);
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasType()) {
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + type_;
        }
        if (hasPower()) {
          hash = (37 * hash) + POWER_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getPower());
        }
        if (hasAmmeter()) {
          hash = (37 * hash) + AMMETER_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getAmmeter());
        }
        if (hasAlternatingvoltage()) {
          hash = (37 * hash) + ALTERNATINGVOLTAGE_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getAlternatingvoltage());
        }
        if (hasDirectvoltage()) {
          hash = (37 * hash) + DIRECTVOLTAGE_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getDirectvoltage());
        }
        if (hasAlternatingelectricity()) {
          hash = (37 * hash) + ALTERNATINGELECTRICITY_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getAlternatingelectricity());
        }
        if (hasDirectelectricity()) {
          hash = (37 * hash) + DIRECTELECTRICITY_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getDirectelectricity());
        }
        if (hasStatus()) {
          hash = (37 * hash) + STATUS_FIELD_NUMBER;
          hash = (53 * hash) + status_;
        }
        if (hasStopchargecause()) {
          hash = (37 * hash) + STOPCHARGECAUSE_FIELD_NUMBER;
          hash = (53 * hash) + stopchargecause_;
        }
        if (getFaultsCount() > 0) {
          hash = (37 * hash) + FAULTS_FIELD_NUMBER;
          hash = (53 * hash) + faults_.hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static DeviceInfo parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceInfo parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceInfo parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceInfo parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceInfo parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceInfo parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceInfo parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static DeviceInfo 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 DeviceInfo parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static DeviceInfo 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 DeviceInfo parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static DeviceInfo 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(DeviceInfo prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备信息
       * </pre>
       *
       * Protobuf type {@code DeviceInfo}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:DeviceInfo)
          DeviceInfoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_DeviceInfo_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_DeviceInfo_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  DeviceInfo.class, Builder.class);
        }
  
        // Construct using DeviceMessage.DeviceInfo.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();
          type_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          power_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000002);
          ammeter_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000004);
          alternatingvoltage_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000008);
          directvoltage_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000010);
          alternatingelectricity_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000020);
          directelectricity_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000040);
          status_ = 0;
          bitField0_ = (bitField0_ & ~0x00000080);
          stopchargecause_ = 0;
          bitField0_ = (bitField0_ & ~0x00000100);
          faults_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_DeviceInfo_descriptor;
        }
  
        public DeviceInfo getDefaultInstanceForType() {
          return DeviceInfo.getDefaultInstance();
        }
  
        public DeviceInfo build() {
          DeviceInfo result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public DeviceInfo buildPartial() {
          DeviceInfo result = new DeviceInfo(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.power_ = power_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.ammeter_ = ammeter_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.alternatingvoltage_ = alternatingvoltage_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.directvoltage_ = directvoltage_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.alternatingelectricity_ = alternatingelectricity_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.directelectricity_ = directelectricity_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          result.status_ = status_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          result.stopchargecause_ = stopchargecause_;
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            faults_ = java.util.Collections.unmodifiableList(faults_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.faults_ = faults_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof DeviceInfo) {
            return mergeFrom((DeviceInfo)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(DeviceInfo other) {
          if (other == DeviceInfo.getDefaultInstance()) return this;
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasPower()) {
            setPower(other.getPower());
          }
          if (other.hasAmmeter()) {
            setAmmeter(other.getAmmeter());
          }
          if (other.hasAlternatingvoltage()) {
            setAlternatingvoltage(other.getAlternatingvoltage());
          }
          if (other.hasDirectvoltage()) {
            setDirectvoltage(other.getDirectvoltage());
          }
          if (other.hasAlternatingelectricity()) {
            setAlternatingelectricity(other.getAlternatingelectricity());
          }
          if (other.hasDirectelectricity()) {
            setDirectelectricity(other.getDirectelectricity());
          }
          if (other.hasStatus()) {
            setStatus(other.getStatus());
          }
          if (other.hasStopchargecause()) {
            setStopchargecause(other.getStopchargecause());
          }
          if (!other.faults_.isEmpty()) {
            if (faults_.isEmpty()) {
              faults_ = other.faults_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureFaultsIsMutable();
              faults_.addAll(other.faults_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasType()) {
            return false;
          }
          if (!hasPower()) {
            return false;
          }
          if (!hasAmmeter()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          DeviceInfo parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (DeviceInfo) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int type_ = 0;
        /**
         * <pre>
         *设备类型
         * </pre>
         *
         * <code>required .DeviceInfo.DeviceType type = 1;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *设备类型
         * </pre>
         *
         * <code>required .DeviceInfo.DeviceType type = 1;</code>
         */
        public DeviceType getType() {
          DeviceType result = DeviceType.valueOf(type_);
          return result == null ? DeviceType.SING_ALTERNATING : result;
        }
        /**
         * <pre>
         *设备类型
         * </pre>
         *
         * <code>required .DeviceInfo.DeviceType type = 1;</code>
         */
        public Builder setType(DeviceType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *设备类型
         * </pre>
         *
         * <code>required .DeviceInfo.DeviceType type = 1;</code>
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = 0;
          onChanged();
          return this;
        }
  
        private float power_ ;
        /**
         * <pre>
         *功率
         * </pre>
         *
         * <code>required float power = 2;</code>
         */
        public boolean hasPower() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *功率
         * </pre>
         *
         * <code>required float power = 2;</code>
         */
        public float getPower() {
          return power_;
        }
        /**
         * <pre>
         *功率
         * </pre>
         *
         * <code>required float power = 2;</code>
         */
        public Builder setPower(float value) {
          bitField0_ |= 0x00000002;
          power_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *功率
         * </pre>
         *
         * <code>required float power = 2;</code>
         */
        public Builder clearPower() {
          bitField0_ = (bitField0_ & ~0x00000002);
          power_ = 0F;
          onChanged();
          return this;
        }
  
        private float ammeter_ ;
        /**
         * <pre>
         *电表电量数
         * </pre>
         *
         * <code>required float ammeter = 3;</code>
         */
        public boolean hasAmmeter() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         *电表电量数
         * </pre>
         *
         * <code>required float ammeter = 3;</code>
         */
        public float getAmmeter() {
          return ammeter_;
        }
        /**
         * <pre>
         *电表电量数
         * </pre>
         *
         * <code>required float ammeter = 3;</code>
         */
        public Builder setAmmeter(float value) {
          bitField0_ |= 0x00000004;
          ammeter_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *电表电量数
         * </pre>
         *
         * <code>required float ammeter = 3;</code>
         */
        public Builder clearAmmeter() {
          bitField0_ = (bitField0_ & ~0x00000004);
          ammeter_ = 0F;
          onChanged();
          return this;
        }
  
        private float alternatingvoltage_ ;
        /**
         * <pre>
         *交流电压
         * </pre>
         *
         * <code>optional float alternatingvoltage = 4;</code>
         */
        public boolean hasAlternatingvoltage() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <pre>
         *交流电压
         * </pre>
         *
         * <code>optional float alternatingvoltage = 4;</code>
         */
        public float getAlternatingvoltage() {
          return alternatingvoltage_;
        }
        /**
         * <pre>
         *交流电压
         * </pre>
         *
         * <code>optional float alternatingvoltage = 4;</code>
         */
        public Builder setAlternatingvoltage(float value) {
          bitField0_ |= 0x00000008;
          alternatingvoltage_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *交流电压
         * </pre>
         *
         * <code>optional float alternatingvoltage = 4;</code>
         */
        public Builder clearAlternatingvoltage() {
          bitField0_ = (bitField0_ & ~0x00000008);
          alternatingvoltage_ = 0F;
          onChanged();
          return this;
        }
  
        private float directvoltage_ ;
        /**
         * <pre>
         *直流电压
         * </pre>
         *
         * <code>optional float directvoltage = 5;</code>
         */
        public boolean hasDirectvoltage() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <pre>
         *直流电压
         * </pre>
         *
         * <code>optional float directvoltage = 5;</code>
         */
        public float getDirectvoltage() {
          return directvoltage_;
        }
        /**
         * <pre>
         *直流电压
         * </pre>
         *
         * <code>optional float directvoltage = 5;</code>
         */
        public Builder setDirectvoltage(float value) {
          bitField0_ |= 0x00000010;
          directvoltage_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *直流电压
         * </pre>
         *
         * <code>optional float directvoltage = 5;</code>
         */
        public Builder clearDirectvoltage() {
          bitField0_ = (bitField0_ & ~0x00000010);
          directvoltage_ = 0F;
          onChanged();
          return this;
        }
  
        private float alternatingelectricity_ ;
        /**
         * <pre>
         *交流电流
         * </pre>
         *
         * <code>optional float alternatingelectricity = 6;</code>
         */
        public boolean hasAlternatingelectricity() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <pre>
         *交流电流
         * </pre>
         *
         * <code>optional float alternatingelectricity = 6;</code>
         */
        public float getAlternatingelectricity() {
          return alternatingelectricity_;
        }
        /**
         * <pre>
         *交流电流
         * </pre>
         *
         * <code>optional float alternatingelectricity = 6;</code>
         */
        public Builder setAlternatingelectricity(float value) {
          bitField0_ |= 0x00000020;
          alternatingelectricity_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *交流电流
         * </pre>
         *
         * <code>optional float alternatingelectricity = 6;</code>
         */
        public Builder clearAlternatingelectricity() {
          bitField0_ = (bitField0_ & ~0x00000020);
          alternatingelectricity_ = 0F;
          onChanged();
          return this;
        }
  
        private float directelectricity_ ;
        /**
         * <pre>
         *直流电流
         * </pre>
         *
         * <code>optional float directelectricity = 7;</code>
         */
        public boolean hasDirectelectricity() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <pre>
         *直流电流
         * </pre>
         *
         * <code>optional float directelectricity = 7;</code>
         */
        public float getDirectelectricity() {
          return directelectricity_;
        }
        /**
         * <pre>
         *直流电流
         * </pre>
         *
         * <code>optional float directelectricity = 7;</code>
         */
        public Builder setDirectelectricity(float value) {
          bitField0_ |= 0x00000040;
          directelectricity_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *直流电流
         * </pre>
         *
         * <code>optional float directelectricity = 7;</code>
         */
        public Builder clearDirectelectricity() {
          bitField0_ = (bitField0_ & ~0x00000040);
          directelectricity_ = 0F;
          onChanged();
          return this;
        }
  
        private int status_ = 0;
        /**
         * <pre>
         *电桩状态
         * </pre>
         *
         * <code>optional .DeviceInfo.Status status = 8;</code>
         */
        public boolean hasStatus() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <pre>
         *电桩状态
         * </pre>
         *
         * <code>optional .DeviceInfo.Status status = 8;</code>
         */
        public Status getStatus() {
          Status result = Status.valueOf(status_);
          return result == null ? Status.RESERVE : result;
        }
        /**
         * <pre>
         *电桩状态
         * </pre>
         *
         * <code>optional .DeviceInfo.Status status = 8;</code>
         */
        public Builder setStatus(Status value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000080;
          status_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *电桩状态
         * </pre>
         *
         * <code>optional .DeviceInfo.Status status = 8;</code>
         */
        public Builder clearStatus() {
          bitField0_ = (bitField0_ & ~0x00000080);
          status_ = 0;
          onChanged();
          return this;
        }
  
        private int stopchargecause_ = 0;
        /**
         * <pre>
         *停止充电原因
         * </pre>
         *
         * <code>optional .DeviceInfo.StopChargeCause stopchargecause = 9;</code>
         */
        public boolean hasStopchargecause() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <pre>
         *停止充电原因
         * </pre>
         *
         * <code>optional .DeviceInfo.StopChargeCause stopchargecause = 9;</code>
         */
        public StopChargeCause getStopchargecause() {
          StopChargeCause result = StopChargeCause.valueOf(stopchargecause_);
          return result == null ? StopChargeCause.TIME_OUT : result;
        }
        /**
         * <pre>
         *停止充电原因
         * </pre>
         *
         * <code>optional .DeviceInfo.StopChargeCause stopchargecause = 9;</code>
         */
        public Builder setStopchargecause(StopChargeCause value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000100;
          stopchargecause_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *停止充电原因
         * </pre>
         *
         * <code>optional .DeviceInfo.StopChargeCause stopchargecause = 9;</code>
         */
        public Builder clearStopchargecause() {
          bitField0_ = (bitField0_ & ~0x00000100);
          stopchargecause_ = 0;
          onChanged();
          return this;
        }
  
        private java.util.List<Integer> faults_ =
          java.util.Collections.emptyList();
        private void ensureFaultsIsMutable() {
          if (!((bitField0_ & 0x00000200) == 0x00000200)) {
            faults_ = new java.util.ArrayList<Integer>(faults_);
            bitField0_ |= 0x00000200;
          }
        }
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>repeated .DeviceInfo.Fault faults = 10;</code>
         */
        public java.util.List<Fault> getFaultsList() {
          return new com.google.protobuf.Internal.ListAdapter<
              Integer, Fault>(faults_, faults_converter_);
        }
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>repeated .DeviceInfo.Fault faults = 10;</code>
         */
        public int getFaultsCount() {
          return faults_.size();
        }
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>repeated .DeviceInfo.Fault faults = 10;</code>
         */
        public Fault getFaults(int index) {
          return faults_converter_.convert(faults_.get(index));
        }
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>repeated .DeviceInfo.Fault faults = 10;</code>
         */
        public Builder setFaults(
            int index, Fault value) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFaultsIsMutable();
          faults_.set(index, value.getNumber());
          onChanged();
          return this;
        }
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>repeated .DeviceInfo.Fault faults = 10;</code>
         */
        public Builder addFaults(Fault value) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFaultsIsMutable();
          faults_.add(value.getNumber());
          onChanged();
          return this;
        }
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>repeated .DeviceInfo.Fault faults = 10;</code>
         */
        public Builder addAllFaults(
            Iterable<? extends Fault> values) {
          ensureFaultsIsMutable();
          for (Fault value : values) {
            faults_.add(value.getNumber());
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>repeated .DeviceInfo.Fault faults = 10;</code>
         */
        public Builder clearFaults() {
          faults_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:DeviceInfo)
      }
  
      // @@protoc_insertion_point(class_scope:DeviceInfo)
      private static final DeviceInfo DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new DeviceInfo();
      }
  
      public static DeviceInfo getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<DeviceInfo>
          PARSER = new com.google.protobuf.AbstractParser<DeviceInfo>() {
        public DeviceInfo parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new DeviceInfo(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<DeviceInfo> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<DeviceInfo> getParserForType() {
        return PARSER;
      }
  
      public DeviceInfo getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface HeartbeatRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:HeartbeatRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      boolean hasDeviceId();
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      String getDeviceId();
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      com.google.protobuf.ByteString
          getDeviceIdBytes();
  
      /**
       * <pre>
       *心跳计数
       * </pre>
       *
       * <code>required uint32 count = 2;</code>
       */
      boolean hasCount();
      /**
       * <pre>
       *心跳计数
       * </pre>
       *
       * <code>required uint32 count = 2;</code>
       */
      int getCount();
  
      /**
       * <pre>
       *超时时间,单位:秒
       * </pre>
       *
       * <code>required uint32 timeout = 3;</code>
       */
      boolean hasTimeout();
      /**
       * <pre>
       *超时时间,单位:秒
       * </pre>
       *
       * <code>required uint32 timeout = 3;</code>
       */
      int getTimeout();
    }
    /**
     * <pre>
     *心跳消息 MessageType.HEARTBEAT_REQUEST
     * </pre>
     *
     * Protobuf type {@code HeartbeatRequest}
     */
    public  static final class HeartbeatRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:HeartbeatRequest)
        HeartbeatRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use HeartbeatRequest.newBuilder() to construct.
      private HeartbeatRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private HeartbeatRequest() {
        deviceId_ = "";
        count_ = 0;
        timeout_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private HeartbeatRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                deviceId_ = bs;
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                count_ = input.readUInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                timeout_ = input.readUInt32();
                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 DeviceMessage.internal_static_HeartbeatRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_HeartbeatRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                HeartbeatRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int DEVICEID_FIELD_NUMBER = 1;
      private volatile Object deviceId_;
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      public boolean hasDeviceId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      public String getDeviceId() {
        Object ref = deviceId_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            deviceId_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      public com.google.protobuf.ByteString
          getDeviceIdBytes() {
        Object ref = deviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          deviceId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int COUNT_FIELD_NUMBER = 2;
      private int count_;
      /**
       * <pre>
       *心跳计数
       * </pre>
       *
       * <code>required uint32 count = 2;</code>
       */
      public boolean hasCount() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *心跳计数
       * </pre>
       *
       * <code>required uint32 count = 2;</code>
       */
      public int getCount() {
        return count_;
      }
  
      public static final int TIMEOUT_FIELD_NUMBER = 3;
      private int timeout_;
      /**
       * <pre>
       *超时时间,单位:秒
       * </pre>
       *
       * <code>required uint32 timeout = 3;</code>
       */
      public boolean hasTimeout() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *超时时间,单位:秒
       * </pre>
       *
       * <code>required uint32 timeout = 3;</code>
       */
      public int getTimeout() {
        return timeout_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasDeviceId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasCount()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTimeout()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, deviceId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, count_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(3, timeout_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, deviceId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, count_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, timeout_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof HeartbeatRequest)) {
          return super.equals(obj);
        }
        HeartbeatRequest other = (HeartbeatRequest) obj;
  
        boolean result = true;
        result = result && (hasDeviceId() == other.hasDeviceId());
        if (hasDeviceId()) {
          result = result && getDeviceId()
              .equals(other.getDeviceId());
        }
        result = result && (hasCount() == other.hasCount());
        if (hasCount()) {
          result = result && (getCount()
              == other.getCount());
        }
        result = result && (hasTimeout() == other.hasTimeout());
        if (hasTimeout()) {
          result = result && (getTimeout()
              == other.getTimeout());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasDeviceId()) {
          hash = (37 * hash) + DEVICEID_FIELD_NUMBER;
          hash = (53 * hash) + getDeviceId().hashCode();
        }
        if (hasCount()) {
          hash = (37 * hash) + COUNT_FIELD_NUMBER;
          hash = (53 * hash) + getCount();
        }
        if (hasTimeout()) {
          hash = (37 * hash) + TIMEOUT_FIELD_NUMBER;
          hash = (53 * hash) + getTimeout();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static HeartbeatRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static HeartbeatRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static HeartbeatRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static HeartbeatRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static HeartbeatRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static HeartbeatRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static HeartbeatRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static HeartbeatRequest 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 HeartbeatRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static HeartbeatRequest 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 HeartbeatRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static HeartbeatRequest 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(HeartbeatRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *心跳消息 MessageType.HEARTBEAT_REQUEST
       * </pre>
       *
       * Protobuf type {@code HeartbeatRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:HeartbeatRequest)
          HeartbeatRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_HeartbeatRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_HeartbeatRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  HeartbeatRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.HeartbeatRequest.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();
          deviceId_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          count_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          timeout_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_HeartbeatRequest_descriptor;
        }
  
        public HeartbeatRequest getDefaultInstanceForType() {
          return HeartbeatRequest.getDefaultInstance();
        }
  
        public HeartbeatRequest build() {
          HeartbeatRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public HeartbeatRequest buildPartial() {
          HeartbeatRequest result = new HeartbeatRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.deviceId_ = deviceId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.count_ = count_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.timeout_ = timeout_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof HeartbeatRequest) {
            return mergeFrom((HeartbeatRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(HeartbeatRequest other) {
          if (other == HeartbeatRequest.getDefaultInstance()) return this;
          if (other.hasDeviceId()) {
            bitField0_ |= 0x00000001;
            deviceId_ = other.deviceId_;
            onChanged();
          }
          if (other.hasCount()) {
            setCount(other.getCount());
          }
          if (other.hasTimeout()) {
            setTimeout(other.getTimeout());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasDeviceId()) {
            return false;
          }
          if (!hasCount()) {
            return false;
          }
          if (!hasTimeout()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          HeartbeatRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (HeartbeatRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Object deviceId_ = "";
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public boolean hasDeviceId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public String getDeviceId() {
          Object ref = deviceId_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              deviceId_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public com.google.protobuf.ByteString
            getDeviceIdBytes() {
          Object ref = deviceId_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            deviceId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public Builder setDeviceId(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          deviceId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public Builder clearDeviceId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          deviceId_ = getDefaultInstance().getDeviceId();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public Builder setDeviceIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          deviceId_ = value;
          onChanged();
          return this;
        }
  
        private int count_ ;
        /**
         * <pre>
         *心跳计数
         * </pre>
         *
         * <code>required uint32 count = 2;</code>
         */
        public boolean hasCount() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *心跳计数
         * </pre>
         *
         * <code>required uint32 count = 2;</code>
         */
        public int getCount() {
          return count_;
        }
        /**
         * <pre>
         *心跳计数
         * </pre>
         *
         * <code>required uint32 count = 2;</code>
         */
        public Builder setCount(int value) {
          bitField0_ |= 0x00000002;
          count_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *心跳计数
         * </pre>
         *
         * <code>required uint32 count = 2;</code>
         */
        public Builder clearCount() {
          bitField0_ = (bitField0_ & ~0x00000002);
          count_ = 0;
          onChanged();
          return this;
        }
  
        private int timeout_ ;
        /**
         * <pre>
         *超时时间,单位:秒
         * </pre>
         *
         * <code>required uint32 timeout = 3;</code>
         */
        public boolean hasTimeout() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         *超时时间,单位:秒
         * </pre>
         *
         * <code>required uint32 timeout = 3;</code>
         */
        public int getTimeout() {
          return timeout_;
        }
        /**
         * <pre>
         *超时时间,单位:秒
         * </pre>
         *
         * <code>required uint32 timeout = 3;</code>
         */
        public Builder setTimeout(int value) {
          bitField0_ |= 0x00000004;
          timeout_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *超时时间,单位:秒
         * </pre>
         *
         * <code>required uint32 timeout = 3;</code>
         */
        public Builder clearTimeout() {
          bitField0_ = (bitField0_ & ~0x00000004);
          timeout_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:HeartbeatRequest)
      }
  
      // @@protoc_insertion_point(class_scope:HeartbeatRequest)
      private static final HeartbeatRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new HeartbeatRequest();
      }
  
      public static HeartbeatRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<HeartbeatRequest>
          PARSER = new com.google.protobuf.AbstractParser<HeartbeatRequest>() {
        public HeartbeatRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new HeartbeatRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<HeartbeatRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<HeartbeatRequest> getParserForType() {
        return PARSER;
      }
  
      public HeartbeatRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface HeartbeatResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:HeartbeatResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *下次心跳间隔时间,单位:秒
       * </pre>
       *
       * <code>required uint32 delay = 1;</code>
       */
      boolean hasDelay();
      /**
       * <pre>
       *下次心跳间隔时间,单位:秒
       * </pre>
       *
       * <code>required uint32 delay = 1;</code>
       */
      int getDelay();
    }
    /**
     * <pre>
     *心跳消息回复 MessageType.HEARTBEAT_RESPONSE
     * </pre>
     *
     * Protobuf type {@code HeartbeatResponse}
     */
    public  static final class HeartbeatResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:HeartbeatResponse)
        HeartbeatResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use HeartbeatResponse.newBuilder() to construct.
      private HeartbeatResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private HeartbeatResponse() {
        delay_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private HeartbeatResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                delay_ = input.readUInt32();
                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 DeviceMessage.internal_static_HeartbeatResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_HeartbeatResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                HeartbeatResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int DELAY_FIELD_NUMBER = 1;
      private int delay_;
      /**
       * <pre>
       *下次心跳间隔时间,单位:秒
       * </pre>
       *
       * <code>required uint32 delay = 1;</code>
       */
      public boolean hasDelay() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *下次心跳间隔时间,单位:秒
       * </pre>
       *
       * <code>required uint32 delay = 1;</code>
       */
      public int getDelay() {
        return delay_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasDelay()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, delay_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, delay_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof HeartbeatResponse)) {
          return super.equals(obj);
        }
        HeartbeatResponse other = (HeartbeatResponse) obj;
  
        boolean result = true;
        result = result && (hasDelay() == other.hasDelay());
        if (hasDelay()) {
          result = result && (getDelay()
              == other.getDelay());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasDelay()) {
          hash = (37 * hash) + DELAY_FIELD_NUMBER;
          hash = (53 * hash) + getDelay();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static HeartbeatResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static HeartbeatResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static HeartbeatResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static HeartbeatResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static HeartbeatResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static HeartbeatResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static HeartbeatResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static HeartbeatResponse 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 HeartbeatResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static HeartbeatResponse 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 HeartbeatResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static HeartbeatResponse 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(HeartbeatResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *心跳消息回复 MessageType.HEARTBEAT_RESPONSE
       * </pre>
       *
       * Protobuf type {@code HeartbeatResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:HeartbeatResponse)
          HeartbeatResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_HeartbeatResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_HeartbeatResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  HeartbeatResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.HeartbeatResponse.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();
          delay_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_HeartbeatResponse_descriptor;
        }
  
        public HeartbeatResponse getDefaultInstanceForType() {
          return HeartbeatResponse.getDefaultInstance();
        }
  
        public HeartbeatResponse build() {
          HeartbeatResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public HeartbeatResponse buildPartial() {
          HeartbeatResponse result = new HeartbeatResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.delay_ = delay_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof HeartbeatResponse) {
            return mergeFrom((HeartbeatResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(HeartbeatResponse other) {
          if (other == HeartbeatResponse.getDefaultInstance()) return this;
          if (other.hasDelay()) {
            setDelay(other.getDelay());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasDelay()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          HeartbeatResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (HeartbeatResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int delay_ ;
        /**
         * <pre>
         *下次心跳间隔时间,单位:秒
         * </pre>
         *
         * <code>required uint32 delay = 1;</code>
         */
        public boolean hasDelay() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *下次心跳间隔时间,单位:秒
         * </pre>
         *
         * <code>required uint32 delay = 1;</code>
         */
        public int getDelay() {
          return delay_;
        }
        /**
         * <pre>
         *下次心跳间隔时间,单位:秒
         * </pre>
         *
         * <code>required uint32 delay = 1;</code>
         */
        public Builder setDelay(int value) {
          bitField0_ |= 0x00000001;
          delay_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *下次心跳间隔时间,单位:秒
         * </pre>
         *
         * <code>required uint32 delay = 1;</code>
         */
        public Builder clearDelay() {
          bitField0_ = (bitField0_ & ~0x00000001);
          delay_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:HeartbeatResponse)
      }
  
      // @@protoc_insertion_point(class_scope:HeartbeatResponse)
      private static final HeartbeatResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new HeartbeatResponse();
      }
  
      public static HeartbeatResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<HeartbeatResponse>
          PARSER = new com.google.protobuf.AbstractParser<HeartbeatResponse>() {
        public HeartbeatResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new HeartbeatResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<HeartbeatResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<HeartbeatResponse> getParserForType() {
        return PARSER;
      }
  
      public HeartbeatResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DeviceLoginRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:DeviceLoginRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      boolean hasDeviceId();
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      String getDeviceId();
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      com.google.protobuf.ByteString
          getDeviceIdBytes();
    }
    /**
     * <pre>
     *设备登录 MessageType.DEVICE_LOGIN_REQUEST
     * </pre>
     *
     * Protobuf type {@code DeviceLoginRequest}
     */
    public  static final class DeviceLoginRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:DeviceLoginRequest)
        DeviceLoginRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use DeviceLoginRequest.newBuilder() to construct.
      private DeviceLoginRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DeviceLoginRequest() {
        deviceId_ = "";
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DeviceLoginRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                deviceId_ = bs;
                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 DeviceMessage.internal_static_DeviceLoginRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_DeviceLoginRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DeviceLoginRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int DEVICEID_FIELD_NUMBER = 1;
      private volatile Object deviceId_;
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      public boolean hasDeviceId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      public String getDeviceId() {
        Object ref = deviceId_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            deviceId_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *设备id
       * </pre>
       *
       * <code>required string deviceId = 1;</code>
       */
      public com.google.protobuf.ByteString
          getDeviceIdBytes() {
        Object ref = deviceId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          deviceId_ = 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;
  
        if (!hasDeviceId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, deviceId_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, deviceId_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof DeviceLoginRequest)) {
          return super.equals(obj);
        }
        DeviceLoginRequest other = (DeviceLoginRequest) obj;
  
        boolean result = true;
        result = result && (hasDeviceId() == other.hasDeviceId());
        if (hasDeviceId()) {
          result = result && getDeviceId()
              .equals(other.getDeviceId());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasDeviceId()) {
          hash = (37 * hash) + DEVICEID_FIELD_NUMBER;
          hash = (53 * hash) + getDeviceId().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static DeviceLoginRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceLoginRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceLoginRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceLoginRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceLoginRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceLoginRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceLoginRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static DeviceLoginRequest 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 DeviceLoginRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static DeviceLoginRequest 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 DeviceLoginRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static DeviceLoginRequest 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(DeviceLoginRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备登录 MessageType.DEVICE_LOGIN_REQUEST
       * </pre>
       *
       * Protobuf type {@code DeviceLoginRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:DeviceLoginRequest)
          DeviceLoginRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_DeviceLoginRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_DeviceLoginRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  DeviceLoginRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.DeviceLoginRequest.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();
          deviceId_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_DeviceLoginRequest_descriptor;
        }
  
        public DeviceLoginRequest getDefaultInstanceForType() {
          return DeviceLoginRequest.getDefaultInstance();
        }
  
        public DeviceLoginRequest build() {
          DeviceLoginRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public DeviceLoginRequest buildPartial() {
          DeviceLoginRequest result = new DeviceLoginRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.deviceId_ = deviceId_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof DeviceLoginRequest) {
            return mergeFrom((DeviceLoginRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(DeviceLoginRequest other) {
          if (other == DeviceLoginRequest.getDefaultInstance()) return this;
          if (other.hasDeviceId()) {
            bitField0_ |= 0x00000001;
            deviceId_ = other.deviceId_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasDeviceId()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          DeviceLoginRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (DeviceLoginRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Object deviceId_ = "";
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public boolean hasDeviceId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public String getDeviceId() {
          Object ref = deviceId_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              deviceId_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public com.google.protobuf.ByteString
            getDeviceIdBytes() {
          Object ref = deviceId_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            deviceId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public Builder setDeviceId(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          deviceId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public Builder clearDeviceId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          deviceId_ = getDefaultInstance().getDeviceId();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *设备id
         * </pre>
         *
         * <code>required string deviceId = 1;</code>
         */
        public Builder setDeviceIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          deviceId_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:DeviceLoginRequest)
      }
  
      // @@protoc_insertion_point(class_scope:DeviceLoginRequest)
      private static final DeviceLoginRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new DeviceLoginRequest();
      }
  
      public static DeviceLoginRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<DeviceLoginRequest>
          PARSER = new com.google.protobuf.AbstractParser<DeviceLoginRequest>() {
        public DeviceLoginRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new DeviceLoginRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<DeviceLoginRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<DeviceLoginRequest> getParserForType() {
        return PARSER;
      }
  
      public DeviceLoginRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DeviceLoginResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:DeviceLoginResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
  
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>optional .FullDate date = 2;</code>
       */
      boolean hasDate();
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>optional .FullDate date = 2;</code>
       */
      FullDate getDate();
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>optional .FullDate date = 2;</code>
       */
      FullDateOrBuilder getDateOrBuilder();
    }
    /**
     * <pre>
     *设备登录回复 MessageType.DEVICE_LOGIN_RESPONSE
     * </pre>
     *
     * Protobuf type {@code DeviceLoginResponse}
     */
    public  static final class DeviceLoginResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:DeviceLoginResponse)
        DeviceLoginResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use DeviceLoginResponse.newBuilder() to construct.
      private DeviceLoginResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DeviceLoginResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DeviceLoginResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                break;
              }
              case 18: {
                FullDate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = date_.toBuilder();
                }
                date_ = input.readMessage(FullDate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(date_);
                  date_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_DeviceLoginResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_DeviceLoginResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DeviceLoginResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      public static final int DATE_FIELD_NUMBER = 2;
      private FullDate date_;
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>optional .FullDate date = 2;</code>
       */
      public boolean hasDate() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>optional .FullDate date = 2;</code>
       */
      public FullDate getDate() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>optional .FullDate date = 2;</code>
       */
      public FullDateOrBuilder getDateOrBuilder() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasDate()) {
          if (!getDate().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getDate());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getDate());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof DeviceLoginResponse)) {
          return super.equals(obj);
        }
        DeviceLoginResponse other = (DeviceLoginResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && (hasDate() == other.hasDate());
        if (hasDate()) {
          result = result && getDate()
              .equals(other.getDate());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        if (hasDate()) {
          hash = (37 * hash) + DATE_FIELD_NUMBER;
          hash = (53 * hash) + getDate().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static DeviceLoginResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceLoginResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceLoginResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceLoginResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceLoginResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static DeviceLoginResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static DeviceLoginResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static DeviceLoginResponse 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 DeviceLoginResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static DeviceLoginResponse 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 DeviceLoginResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static DeviceLoginResponse 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(DeviceLoginResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备登录回复 MessageType.DEVICE_LOGIN_RESPONSE
       * </pre>
       *
       * Protobuf type {@code DeviceLoginResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:DeviceLoginResponse)
          DeviceLoginResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_DeviceLoginResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_DeviceLoginResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  DeviceLoginResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.DeviceLoginResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDateFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (dateBuilder_ == null) {
            date_ = null;
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_DeviceLoginResponse_descriptor;
        }
  
        public DeviceLoginResponse getDefaultInstanceForType() {
          return DeviceLoginResponse.getDefaultInstance();
        }
  
        public DeviceLoginResponse build() {
          DeviceLoginResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public DeviceLoginResponse buildPartial() {
          DeviceLoginResponse result = new DeviceLoginResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (dateBuilder_ == null) {
            result.date_ = date_;
          } else {
            result.date_ = dateBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof DeviceLoginResponse) {
            return mergeFrom((DeviceLoginResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(DeviceLoginResponse other) {
          if (other == DeviceLoginResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          if (other.hasDate()) {
            mergeDate(other.getDate());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          if (hasDate()) {
            if (!getDate().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          DeviceLoginResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (DeviceLoginResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
  
        private FullDate date_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder> dateBuilder_;
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        public boolean hasDate() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        public FullDate getDate() {
          if (dateBuilder_ == null) {
            return date_ == null ? FullDate.getDefaultInstance() : date_;
          } else {
            return dateBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        public Builder setDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            date_ = value;
            onChanged();
          } else {
            dateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        public Builder setDate(
            FullDate.Builder builderForValue) {
          if (dateBuilder_ == null) {
            date_ = builderForValue.build();
            onChanged();
          } else {
            dateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        public Builder mergeDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                date_ != null &&
                date_ != FullDate.getDefaultInstance()) {
              date_ =
                FullDate.newBuilder(date_).mergeFrom(value).buildPartial();
            } else {
              date_ = value;
            }
            onChanged();
          } else {
            dateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        public Builder clearDate() {
          if (dateBuilder_ == null) {
            date_ = null;
            onChanged();
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        public FullDate.Builder getDateBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getDateFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        public FullDateOrBuilder getDateOrBuilder() {
          if (dateBuilder_ != null) {
            return dateBuilder_.getMessageOrBuilder();
          } else {
            return date_ == null ?
                FullDate.getDefaultInstance() : date_;
          }
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>optional .FullDate date = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder>
            getDateFieldBuilder() {
          if (dateBuilder_ == null) {
            dateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                FullDate, FullDate.Builder, FullDateOrBuilder>(
                    getDate(),
                    getParentForChildren(),
                    isClean());
            date_ = null;
          }
          return dateBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:DeviceLoginResponse)
      }
  
      // @@protoc_insertion_point(class_scope:DeviceLoginResponse)
      private static final DeviceLoginResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new DeviceLoginResponse();
      }
  
      public static DeviceLoginResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<DeviceLoginResponse>
          PARSER = new com.google.protobuf.AbstractParser<DeviceLoginResponse>() {
        public DeviceLoginResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new DeviceLoginResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<DeviceLoginResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<DeviceLoginResponse> getParserForType() {
        return PARSER;
      }
  
      public DeviceLoginResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface SettingDateRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:SettingDateRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      boolean hasDate();
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      FullDate getDate();
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      FullDateOrBuilder getDateOrBuilder();
    }
    /**
     * <pre>
     *设置时间请求 MessageType.SETTING_DATE_REQUEST
     * </pre>
     *
     * Protobuf type {@code SettingDateRequest}
     */
    public  static final class SettingDateRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:SettingDateRequest)
        SettingDateRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SettingDateRequest.newBuilder() to construct.
      private SettingDateRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SettingDateRequest() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SettingDateRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                FullDate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = date_.toBuilder();
                }
                date_ = input.readMessage(FullDate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(date_);
                  date_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                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 DeviceMessage.internal_static_SettingDateRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_SettingDateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SettingDateRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int DATE_FIELD_NUMBER = 1;
      private FullDate date_;
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      public boolean hasDate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      public FullDate getDate() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      public FullDateOrBuilder getDateOrBuilder() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasDate()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getDate().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getDate());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getDate());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof SettingDateRequest)) {
          return super.equals(obj);
        }
        SettingDateRequest other = (SettingDateRequest) obj;
  
        boolean result = true;
        result = result && (hasDate() == other.hasDate());
        if (hasDate()) {
          result = result && getDate()
              .equals(other.getDate());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasDate()) {
          hash = (37 * hash) + DATE_FIELD_NUMBER;
          hash = (53 * hash) + getDate().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static SettingDateRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingDateRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingDateRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingDateRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingDateRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingDateRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingDateRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingDateRequest 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 SettingDateRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static SettingDateRequest 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 SettingDateRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingDateRequest 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(SettingDateRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设置时间请求 MessageType.SETTING_DATE_REQUEST
       * </pre>
       *
       * Protobuf type {@code SettingDateRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:SettingDateRequest)
          SettingDateRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_SettingDateRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_SettingDateRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  SettingDateRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.SettingDateRequest.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDateFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (dateBuilder_ == null) {
            date_ = null;
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_SettingDateRequest_descriptor;
        }
  
        public SettingDateRequest getDefaultInstanceForType() {
          return SettingDateRequest.getDefaultInstance();
        }
  
        public SettingDateRequest build() {
          SettingDateRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public SettingDateRequest buildPartial() {
          SettingDateRequest result = new SettingDateRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (dateBuilder_ == null) {
            result.date_ = date_;
          } else {
            result.date_ = dateBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof SettingDateRequest) {
            return mergeFrom((SettingDateRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(SettingDateRequest other) {
          if (other == SettingDateRequest.getDefaultInstance()) return this;
          if (other.hasDate()) {
            mergeDate(other.getDate());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasDate()) {
            return false;
          }
          if (!getDate().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          SettingDateRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (SettingDateRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private FullDate date_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder> dateBuilder_;
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public boolean hasDate() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public FullDate getDate() {
          if (dateBuilder_ == null) {
            return date_ == null ? FullDate.getDefaultInstance() : date_;
          } else {
            return dateBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public Builder setDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            date_ = value;
            onChanged();
          } else {
            dateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public Builder setDate(
            FullDate.Builder builderForValue) {
          if (dateBuilder_ == null) {
            date_ = builderForValue.build();
            onChanged();
          } else {
            dateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public Builder mergeDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                date_ != null &&
                date_ != FullDate.getDefaultInstance()) {
              date_ =
                FullDate.newBuilder(date_).mergeFrom(value).buildPartial();
            } else {
              date_ = value;
            }
            onChanged();
          } else {
            dateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public Builder clearDate() {
          if (dateBuilder_ == null) {
            date_ = null;
            onChanged();
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public FullDate.Builder getDateBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getDateFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public FullDateOrBuilder getDateOrBuilder() {
          if (dateBuilder_ != null) {
            return dateBuilder_.getMessageOrBuilder();
          } else {
            return date_ == null ?
                FullDate.getDefaultInstance() : date_;
          }
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder>
            getDateFieldBuilder() {
          if (dateBuilder_ == null) {
            dateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                FullDate, FullDate.Builder, FullDateOrBuilder>(
                    getDate(),
                    getParentForChildren(),
                    isClean());
            date_ = null;
          }
          return dateBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:SettingDateRequest)
      }
  
      // @@protoc_insertion_point(class_scope:SettingDateRequest)
      private static final SettingDateRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new SettingDateRequest();
      }
  
      public static SettingDateRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<SettingDateRequest>
          PARSER = new com.google.protobuf.AbstractParser<SettingDateRequest>() {
        public SettingDateRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new SettingDateRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<SettingDateRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<SettingDateRequest> getParserForType() {
        return PARSER;
      }
  
      public SettingDateRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface SettingDateResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:SettingDateResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      boolean hasDate();
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      FullDate getDate();
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      FullDateOrBuilder getDateOrBuilder();
    }
    /**
     * <pre>
     *设置时间回复 MessageType.SETTING_DATE_RESPONSE
     * </pre>
     *
     * Protobuf type {@code SettingDateResponse}
     */
    public  static final class SettingDateResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:SettingDateResponse)
        SettingDateResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SettingDateResponse.newBuilder() to construct.
      private SettingDateResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SettingDateResponse() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SettingDateResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                FullDate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = date_.toBuilder();
                }
                date_ = input.readMessage(FullDate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(date_);
                  date_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                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 DeviceMessage.internal_static_SettingDateResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_SettingDateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SettingDateResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int DATE_FIELD_NUMBER = 1;
      private FullDate date_;
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      public boolean hasDate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      public FullDate getDate() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
      /**
       * <pre>
       *时间
       * </pre>
       *
       * <code>required .FullDate date = 1;</code>
       */
      public FullDateOrBuilder getDateOrBuilder() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasDate()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getDate().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getDate());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getDate());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof SettingDateResponse)) {
          return super.equals(obj);
        }
        SettingDateResponse other = (SettingDateResponse) obj;
  
        boolean result = true;
        result = result && (hasDate() == other.hasDate());
        if (hasDate()) {
          result = result && getDate()
              .equals(other.getDate());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasDate()) {
          hash = (37 * hash) + DATE_FIELD_NUMBER;
          hash = (53 * hash) + getDate().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static SettingDateResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingDateResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingDateResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingDateResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingDateResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingDateResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingDateResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingDateResponse 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 SettingDateResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static SettingDateResponse 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 SettingDateResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingDateResponse 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(SettingDateResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设置时间回复 MessageType.SETTING_DATE_RESPONSE
       * </pre>
       *
       * Protobuf type {@code SettingDateResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:SettingDateResponse)
          SettingDateResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_SettingDateResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_SettingDateResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  SettingDateResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.SettingDateResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDateFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (dateBuilder_ == null) {
            date_ = null;
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_SettingDateResponse_descriptor;
        }
  
        public SettingDateResponse getDefaultInstanceForType() {
          return SettingDateResponse.getDefaultInstance();
        }
  
        public SettingDateResponse build() {
          SettingDateResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public SettingDateResponse buildPartial() {
          SettingDateResponse result = new SettingDateResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (dateBuilder_ == null) {
            result.date_ = date_;
          } else {
            result.date_ = dateBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof SettingDateResponse) {
            return mergeFrom((SettingDateResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(SettingDateResponse other) {
          if (other == SettingDateResponse.getDefaultInstance()) return this;
          if (other.hasDate()) {
            mergeDate(other.getDate());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasDate()) {
            return false;
          }
          if (!getDate().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          SettingDateResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (SettingDateResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private FullDate date_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder> dateBuilder_;
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public boolean hasDate() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public FullDate getDate() {
          if (dateBuilder_ == null) {
            return date_ == null ? FullDate.getDefaultInstance() : date_;
          } else {
            return dateBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public Builder setDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            date_ = value;
            onChanged();
          } else {
            dateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public Builder setDate(
            FullDate.Builder builderForValue) {
          if (dateBuilder_ == null) {
            date_ = builderForValue.build();
            onChanged();
          } else {
            dateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public Builder mergeDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                date_ != null &&
                date_ != FullDate.getDefaultInstance()) {
              date_ =
                FullDate.newBuilder(date_).mergeFrom(value).buildPartial();
            } else {
              date_ = value;
            }
            onChanged();
          } else {
            dateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public Builder clearDate() {
          if (dateBuilder_ == null) {
            date_ = null;
            onChanged();
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public FullDate.Builder getDateBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getDateFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        public FullDateOrBuilder getDateOrBuilder() {
          if (dateBuilder_ != null) {
            return dateBuilder_.getMessageOrBuilder();
          } else {
            return date_ == null ?
                FullDate.getDefaultInstance() : date_;
          }
        }
        /**
         * <pre>
         *时间
         * </pre>
         *
         * <code>required .FullDate date = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder>
            getDateFieldBuilder() {
          if (dateBuilder_ == null) {
            dateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                FullDate, FullDate.Builder, FullDateOrBuilder>(
                    getDate(),
                    getParentForChildren(),
                    isClean());
            date_ = null;
          }
          return dateBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:SettingDateResponse)
      }
  
      // @@protoc_insertion_point(class_scope:SettingDateResponse)
      private static final SettingDateResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new SettingDateResponse();
      }
  
      public static SettingDateResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<SettingDateResponse>
          PARSER = new com.google.protobuf.AbstractParser<SettingDateResponse>() {
        public SettingDateResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new SettingDateResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<SettingDateResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<SettingDateResponse> getParserForType() {
        return PARSER;
      }
  
      public SettingDateResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface SettingQRRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:SettingQRRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *二维码内容
       * </pre>
       *
       * <code>required string content = 1;</code>
       */
      boolean hasContent();
      /**
       * <pre>
       *二维码内容
       * </pre>
       *
       * <code>required string content = 1;</code>
       */
      String getContent();
      /**
       * <pre>
       *二维码内容
       * </pre>
       *
       * <code>required string content = 1;</code>
       */
      com.google.protobuf.ByteString
          getContentBytes();
    }
    /**
     * <pre>
     *设置二维码请求 MessageType.SETTING_QR_REQUEST
     * </pre>
     *
     * Protobuf type {@code SettingQRRequest}
     */
    public  static final class SettingQRRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:SettingQRRequest)
        SettingQRRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SettingQRRequest.newBuilder() to construct.
      private SettingQRRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SettingQRRequest() {
        content_ = "";
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SettingQRRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                content_ = bs;
                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 DeviceMessage.internal_static_SettingQRRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_SettingQRRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SettingQRRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int CONTENT_FIELD_NUMBER = 1;
      private volatile Object content_;
      /**
       * <pre>
       *二维码内容
       * </pre>
       *
       * <code>required string content = 1;</code>
       */
      public boolean hasContent() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *二维码内容
       * </pre>
       *
       * <code>required string content = 1;</code>
       */
      public String getContent() {
        Object ref = content_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            content_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *二维码内容
       * </pre>
       *
       * <code>required string content = 1;</code>
       */
      public com.google.protobuf.ByteString
          getContentBytes() {
        Object ref = content_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          content_ = 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;
  
        if (!hasContent()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, content_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, content_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof SettingQRRequest)) {
          return super.equals(obj);
        }
        SettingQRRequest other = (SettingQRRequest) obj;
  
        boolean result = true;
        result = result && (hasContent() == other.hasContent());
        if (hasContent()) {
          result = result && getContent()
              .equals(other.getContent());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasContent()) {
          hash = (37 * hash) + CONTENT_FIELD_NUMBER;
          hash = (53 * hash) + getContent().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static SettingQRRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingQRRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingQRRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingQRRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingQRRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingQRRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingQRRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingQRRequest 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 SettingQRRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static SettingQRRequest 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 SettingQRRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingQRRequest 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(SettingQRRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设置二维码请求 MessageType.SETTING_QR_REQUEST
       * </pre>
       *
       * Protobuf type {@code SettingQRRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:SettingQRRequest)
          SettingQRRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_SettingQRRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_SettingQRRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  SettingQRRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.SettingQRRequest.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();
          content_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_SettingQRRequest_descriptor;
        }
  
        public SettingQRRequest getDefaultInstanceForType() {
          return SettingQRRequest.getDefaultInstance();
        }
  
        public SettingQRRequest build() {
          SettingQRRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public SettingQRRequest buildPartial() {
          SettingQRRequest result = new SettingQRRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.content_ = content_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof SettingQRRequest) {
            return mergeFrom((SettingQRRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(SettingQRRequest other) {
          if (other == SettingQRRequest.getDefaultInstance()) return this;
          if (other.hasContent()) {
            bitField0_ |= 0x00000001;
            content_ = other.content_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasContent()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          SettingQRRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (SettingQRRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Object content_ = "";
        /**
         * <pre>
         *二维码内容
         * </pre>
         *
         * <code>required string content = 1;</code>
         */
        public boolean hasContent() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *二维码内容
         * </pre>
         *
         * <code>required string content = 1;</code>
         */
        public String getContent() {
          Object ref = content_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              content_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *二维码内容
         * </pre>
         *
         * <code>required string content = 1;</code>
         */
        public com.google.protobuf.ByteString
            getContentBytes() {
          Object ref = content_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            content_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *二维码内容
         * </pre>
         *
         * <code>required string content = 1;</code>
         */
        public Builder setContent(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          content_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *二维码内容
         * </pre>
         *
         * <code>required string content = 1;</code>
         */
        public Builder clearContent() {
          bitField0_ = (bitField0_ & ~0x00000001);
          content_ = getDefaultInstance().getContent();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *二维码内容
         * </pre>
         *
         * <code>required string content = 1;</code>
         */
        public Builder setContentBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          content_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:SettingQRRequest)
      }
  
      // @@protoc_insertion_point(class_scope:SettingQRRequest)
      private static final SettingQRRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new SettingQRRequest();
      }
  
      public static SettingQRRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<SettingQRRequest>
          PARSER = new com.google.protobuf.AbstractParser<SettingQRRequest>() {
        public SettingQRRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new SettingQRRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<SettingQRRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<SettingQRRequest> getParserForType() {
        return PARSER;
      }
  
      public SettingQRRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface SettingQRResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:SettingQRResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
    }
    /**
     * <pre>
     *设置二维码回复 MessageType.SETTING_QR_RESPONSE
     * </pre>
     *
     * Protobuf type {@code SettingQRResponse}
     */
    public  static final class SettingQRResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:SettingQRResponse)
        SettingQRResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SettingQRResponse.newBuilder() to construct.
      private SettingQRResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SettingQRResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SettingQRResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                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 DeviceMessage.internal_static_SettingQRResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_SettingQRResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SettingQRResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof SettingQRResponse)) {
          return super.equals(obj);
        }
        SettingQRResponse other = (SettingQRResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static SettingQRResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingQRResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingQRResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingQRResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingQRResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingQRResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingQRResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingQRResponse 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 SettingQRResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static SettingQRResponse 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 SettingQRResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingQRResponse 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(SettingQRResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设置二维码回复 MessageType.SETTING_QR_RESPONSE
       * </pre>
       *
       * Protobuf type {@code SettingQRResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:SettingQRResponse)
          SettingQRResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_SettingQRResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_SettingQRResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  SettingQRResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.SettingQRResponse.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_SettingQRResponse_descriptor;
        }
  
        public SettingQRResponse getDefaultInstanceForType() {
          return SettingQRResponse.getDefaultInstance();
        }
  
        public SettingQRResponse build() {
          SettingQRResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public SettingQRResponse buildPartial() {
          SettingQRResponse result = new SettingQRResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof SettingQRResponse) {
            return mergeFrom((SettingQRResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(SettingQRResponse other) {
          if (other == SettingQRResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          SettingQRResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (SettingQRResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:SettingQRResponse)
      }
  
      // @@protoc_insertion_point(class_scope:SettingQRResponse)
      private static final SettingQRResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new SettingQRResponse();
      }
  
      public static SettingQRResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<SettingQRResponse>
          PARSER = new com.google.protobuf.AbstractParser<SettingQRResponse>() {
        public SettingQRResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new SettingQRResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<SettingQRResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<SettingQRResponse> getParserForType() {
        return PARSER;
      }
  
      public SettingQRResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface SettingRateRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:SettingRateRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *费率
       * </pre>
       *
       * <code>required .Rate rate = 1;</code>
       */
      boolean hasRate();
      /**
       * <pre>
       *费率
       * </pre>
       *
       * <code>required .Rate rate = 1;</code>
       */
      Rate getRate();
      /**
       * <pre>
       *费率
       * </pre>
       *
       * <code>required .Rate rate = 1;</code>
       */
      RateOrBuilder getRateOrBuilder();
    }
    /**
     * <pre>
     *设置费率请求 MessageType.SETTING_RATE_REQUEST
     * </pre>
     *
     * Protobuf type {@code SettingRateRequest}
     */
    public  static final class SettingRateRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:SettingRateRequest)
        SettingRateRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SettingRateRequest.newBuilder() to construct.
      private SettingRateRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SettingRateRequest() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SettingRateRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                Rate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = rate_.toBuilder();
                }
                rate_ = input.readMessage(Rate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(rate_);
                  rate_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                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 DeviceMessage.internal_static_SettingRateRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_SettingRateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SettingRateRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int RATE_FIELD_NUMBER = 1;
      private Rate rate_;
      /**
       * <pre>
       *费率
       * </pre>
       *
       * <code>required .Rate rate = 1;</code>
       */
      public boolean hasRate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *费率
       * </pre>
       *
       * <code>required .Rate rate = 1;</code>
       */
      public Rate getRate() {
        return rate_ == null ? Rate.getDefaultInstance() : rate_;
      }
      /**
       * <pre>
       *费率
       * </pre>
       *
       * <code>required .Rate rate = 1;</code>
       */
      public RateOrBuilder getRateOrBuilder() {
        return rate_ == null ? Rate.getDefaultInstance() : rate_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasRate()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getRate().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getRate());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getRate());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof SettingRateRequest)) {
          return super.equals(obj);
        }
        SettingRateRequest other = (SettingRateRequest) obj;
  
        boolean result = true;
        result = result && (hasRate() == other.hasRate());
        if (hasRate()) {
          result = result && getRate()
              .equals(other.getRate());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasRate()) {
          hash = (37 * hash) + RATE_FIELD_NUMBER;
          hash = (53 * hash) + getRate().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static SettingRateRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingRateRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingRateRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingRateRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingRateRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingRateRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingRateRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingRateRequest 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 SettingRateRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static SettingRateRequest 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 SettingRateRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingRateRequest 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(SettingRateRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设置费率请求 MessageType.SETTING_RATE_REQUEST
       * </pre>
       *
       * Protobuf type {@code SettingRateRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:SettingRateRequest)
          SettingRateRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_SettingRateRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_SettingRateRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  SettingRateRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.SettingRateRequest.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getRateFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (rateBuilder_ == null) {
            rate_ = null;
          } else {
            rateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_SettingRateRequest_descriptor;
        }
  
        public SettingRateRequest getDefaultInstanceForType() {
          return SettingRateRequest.getDefaultInstance();
        }
  
        public SettingRateRequest build() {
          SettingRateRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public SettingRateRequest buildPartial() {
          SettingRateRequest result = new SettingRateRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (rateBuilder_ == null) {
            result.rate_ = rate_;
          } else {
            result.rate_ = rateBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof SettingRateRequest) {
            return mergeFrom((SettingRateRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(SettingRateRequest other) {
          if (other == SettingRateRequest.getDefaultInstance()) return this;
          if (other.hasRate()) {
            mergeRate(other.getRate());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasRate()) {
            return false;
          }
          if (!getRate().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          SettingRateRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (SettingRateRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Rate rate_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Rate, Rate.Builder, RateOrBuilder> rateBuilder_;
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        public boolean hasRate() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        public Rate getRate() {
          if (rateBuilder_ == null) {
            return rate_ == null ? Rate.getDefaultInstance() : rate_;
          } else {
            return rateBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        public Builder setRate(Rate value) {
          if (rateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            rate_ = value;
            onChanged();
          } else {
            rateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        public Builder setRate(
            Rate.Builder builderForValue) {
          if (rateBuilder_ == null) {
            rate_ = builderForValue.build();
            onChanged();
          } else {
            rateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        public Builder mergeRate(Rate value) {
          if (rateBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                rate_ != null &&
                rate_ != Rate.getDefaultInstance()) {
              rate_ =
                Rate.newBuilder(rate_).mergeFrom(value).buildPartial();
            } else {
              rate_ = value;
            }
            onChanged();
          } else {
            rateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        public Builder clearRate() {
          if (rateBuilder_ == null) {
            rate_ = null;
            onChanged();
          } else {
            rateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        public Rate.Builder getRateBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getRateFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        public RateOrBuilder getRateOrBuilder() {
          if (rateBuilder_ != null) {
            return rateBuilder_.getMessageOrBuilder();
          } else {
            return rate_ == null ?
                Rate.getDefaultInstance() : rate_;
          }
        }
        /**
         * <pre>
         *费率
         * </pre>
         *
         * <code>required .Rate rate = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Rate, Rate.Builder, RateOrBuilder>
            getRateFieldBuilder() {
          if (rateBuilder_ == null) {
            rateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Rate, Rate.Builder, RateOrBuilder>(
                    getRate(),
                    getParentForChildren(),
                    isClean());
            rate_ = null;
          }
          return rateBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:SettingRateRequest)
      }
  
      // @@protoc_insertion_point(class_scope:SettingRateRequest)
      private static final SettingRateRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new SettingRateRequest();
      }
  
      public static SettingRateRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<SettingRateRequest>
          PARSER = new com.google.protobuf.AbstractParser<SettingRateRequest>() {
        public SettingRateRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new SettingRateRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<SettingRateRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<SettingRateRequest> getParserForType() {
        return PARSER;
      }
  
      public SettingRateRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface SettingRateResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:SettingRateResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
    }
    /**
     * <pre>
     *设置费率回复 MessageType.SETTING_RATE_RESPONSE
     * </pre>
     *
     * Protobuf type {@code SettingRateResponse}
     */
    public  static final class SettingRateResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:SettingRateResponse)
        SettingRateResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SettingRateResponse.newBuilder() to construct.
      private SettingRateResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SettingRateResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SettingRateResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                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 DeviceMessage.internal_static_SettingRateResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_SettingRateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                SettingRateResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof SettingRateResponse)) {
          return super.equals(obj);
        }
        SettingRateResponse other = (SettingRateResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static SettingRateResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingRateResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingRateResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingRateResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingRateResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static SettingRateResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static SettingRateResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingRateResponse 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 SettingRateResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static SettingRateResponse 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 SettingRateResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static SettingRateResponse 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(SettingRateResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设置费率回复 MessageType.SETTING_RATE_RESPONSE
       * </pre>
       *
       * Protobuf type {@code SettingRateResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:SettingRateResponse)
          SettingRateResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_SettingRateResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_SettingRateResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  SettingRateResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.SettingRateResponse.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_SettingRateResponse_descriptor;
        }
  
        public SettingRateResponse getDefaultInstanceForType() {
          return SettingRateResponse.getDefaultInstance();
        }
  
        public SettingRateResponse build() {
          SettingRateResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public SettingRateResponse buildPartial() {
          SettingRateResponse result = new SettingRateResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof SettingRateResponse) {
            return mergeFrom((SettingRateResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(SettingRateResponse other) {
          if (other == SettingRateResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          SettingRateResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (SettingRateResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:SettingRateResponse)
      }
  
      // @@protoc_insertion_point(class_scope:SettingRateResponse)
      private static final SettingRateResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new SettingRateResponse();
      }
  
      public static SettingRateResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<SettingRateResponse>
          PARSER = new com.google.protobuf.AbstractParser<SettingRateResponse>() {
        public SettingRateResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new SettingRateResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<SettingRateResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<SettingRateResponse> getParserForType() {
        return PARSER;
      }
  
      public SettingRateResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface RateQueryRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:RateQueryRequest)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     *费率查询请求 MessageType.RATE_QUERY_REQUEST
     * </pre>
     *
     * Protobuf type {@code RateQueryRequest}
     */
    public  static final class RateQueryRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:RateQueryRequest)
        RateQueryRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use RateQueryRequest.newBuilder() to construct.
      private RateQueryRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private RateQueryRequest() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private RateQueryRequest(
          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 (!parseUnknownField(
                    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 DeviceMessage.internal_static_RateQueryRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_RateQueryRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                RateQueryRequest.class, 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;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof RateQueryRequest)) {
          return super.equals(obj);
        }
        RateQueryRequest other = (RateQueryRequest) obj;
  
        boolean result = true;
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @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 RateQueryRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static RateQueryRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static RateQueryRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static RateQueryRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static RateQueryRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static RateQueryRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static RateQueryRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static RateQueryRequest 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 RateQueryRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static RateQueryRequest 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 RateQueryRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static RateQueryRequest 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(RateQueryRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *费率查询请求 MessageType.RATE_QUERY_REQUEST
       * </pre>
       *
       * Protobuf type {@code RateQueryRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:RateQueryRequest)
          RateQueryRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_RateQueryRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_RateQueryRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  RateQueryRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.RateQueryRequest.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 DeviceMessage.internal_static_RateQueryRequest_descriptor;
        }
  
        public RateQueryRequest getDefaultInstanceForType() {
          return RateQueryRequest.getDefaultInstance();
        }
  
        public RateQueryRequest build() {
          RateQueryRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public RateQueryRequest buildPartial() {
          RateQueryRequest result = new RateQueryRequest(this);
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof RateQueryRequest) {
            return mergeFrom((RateQueryRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(RateQueryRequest other) {
          if (other == RateQueryRequest.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 {
          RateQueryRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (RateQueryRequest) 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.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:RateQueryRequest)
      }
  
      // @@protoc_insertion_point(class_scope:RateQueryRequest)
      private static final RateQueryRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new RateQueryRequest();
      }
  
      public static RateQueryRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<RateQueryRequest>
          PARSER = new com.google.protobuf.AbstractParser<RateQueryRequest>() {
        public RateQueryRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new RateQueryRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<RateQueryRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<RateQueryRequest> getParserForType() {
        return PARSER;
      }
  
      public RateQueryRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface RateQueryResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:RateQueryResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .Rate rate = 1;</code>
       */
      boolean hasRate();
      /**
       * <code>required .Rate rate = 1;</code>
       */
      Rate getRate();
      /**
       * <code>required .Rate rate = 1;</code>
       */
      RateOrBuilder getRateOrBuilder();
    }
    /**
     * <pre>
     *费率查询回复 MessageType.RATE_QUERY_RESPONSE
     * </pre>
     *
     * Protobuf type {@code RateQueryResponse}
     */
    public  static final class RateQueryResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:RateQueryResponse)
        RateQueryResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use RateQueryResponse.newBuilder() to construct.
      private RateQueryResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private RateQueryResponse() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private RateQueryResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                Rate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = rate_.toBuilder();
                }
                rate_ = input.readMessage(Rate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(rate_);
                  rate_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                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 DeviceMessage.internal_static_RateQueryResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_RateQueryResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                RateQueryResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int RATE_FIELD_NUMBER = 1;
      private Rate rate_;
      /**
       * <code>required .Rate rate = 1;</code>
       */
      public boolean hasRate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .Rate rate = 1;</code>
       */
      public Rate getRate() {
        return rate_ == null ? Rate.getDefaultInstance() : rate_;
      }
      /**
       * <code>required .Rate rate = 1;</code>
       */
      public RateOrBuilder getRateOrBuilder() {
        return rate_ == null ? Rate.getDefaultInstance() : rate_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasRate()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getRate().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getRate());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getRate());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof RateQueryResponse)) {
          return super.equals(obj);
        }
        RateQueryResponse other = (RateQueryResponse) obj;
  
        boolean result = true;
        result = result && (hasRate() == other.hasRate());
        if (hasRate()) {
          result = result && getRate()
              .equals(other.getRate());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasRate()) {
          hash = (37 * hash) + RATE_FIELD_NUMBER;
          hash = (53 * hash) + getRate().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static RateQueryResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static RateQueryResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static RateQueryResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static RateQueryResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static RateQueryResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static RateQueryResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static RateQueryResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static RateQueryResponse 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 RateQueryResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static RateQueryResponse 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 RateQueryResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static RateQueryResponse 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(RateQueryResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *费率查询回复 MessageType.RATE_QUERY_RESPONSE
       * </pre>
       *
       * Protobuf type {@code RateQueryResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:RateQueryResponse)
          RateQueryResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_RateQueryResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_RateQueryResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  RateQueryResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.RateQueryResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getRateFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (rateBuilder_ == null) {
            rate_ = null;
          } else {
            rateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_RateQueryResponse_descriptor;
        }
  
        public RateQueryResponse getDefaultInstanceForType() {
          return RateQueryResponse.getDefaultInstance();
        }
  
        public RateQueryResponse build() {
          RateQueryResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public RateQueryResponse buildPartial() {
          RateQueryResponse result = new RateQueryResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (rateBuilder_ == null) {
            result.rate_ = rate_;
          } else {
            result.rate_ = rateBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof RateQueryResponse) {
            return mergeFrom((RateQueryResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(RateQueryResponse other) {
          if (other == RateQueryResponse.getDefaultInstance()) return this;
          if (other.hasRate()) {
            mergeRate(other.getRate());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasRate()) {
            return false;
          }
          if (!getRate().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          RateQueryResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (RateQueryResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Rate rate_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Rate, Rate.Builder, RateOrBuilder> rateBuilder_;
        /**
         * <code>required .Rate rate = 1;</code>
         */
        public boolean hasRate() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .Rate rate = 1;</code>
         */
        public Rate getRate() {
          if (rateBuilder_ == null) {
            return rate_ == null ? Rate.getDefaultInstance() : rate_;
          } else {
            return rateBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Rate rate = 1;</code>
         */
        public Builder setRate(Rate value) {
          if (rateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            rate_ = value;
            onChanged();
          } else {
            rateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Rate rate = 1;</code>
         */
        public Builder setRate(
            Rate.Builder builderForValue) {
          if (rateBuilder_ == null) {
            rate_ = builderForValue.build();
            onChanged();
          } else {
            rateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Rate rate = 1;</code>
         */
        public Builder mergeRate(Rate value) {
          if (rateBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                rate_ != null &&
                rate_ != Rate.getDefaultInstance()) {
              rate_ =
                Rate.newBuilder(rate_).mergeFrom(value).buildPartial();
            } else {
              rate_ = value;
            }
            onChanged();
          } else {
            rateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Rate rate = 1;</code>
         */
        public Builder clearRate() {
          if (rateBuilder_ == null) {
            rate_ = null;
            onChanged();
          } else {
            rateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <code>required .Rate rate = 1;</code>
         */
        public Rate.Builder getRateBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getRateFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Rate rate = 1;</code>
         */
        public RateOrBuilder getRateOrBuilder() {
          if (rateBuilder_ != null) {
            return rateBuilder_.getMessageOrBuilder();
          } else {
            return rate_ == null ?
                Rate.getDefaultInstance() : rate_;
          }
        }
        /**
         * <code>required .Rate rate = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Rate, Rate.Builder, RateOrBuilder>
            getRateFieldBuilder() {
          if (rateBuilder_ == null) {
            rateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Rate, Rate.Builder, RateOrBuilder>(
                    getRate(),
                    getParentForChildren(),
                    isClean());
            rate_ = null;
          }
          return rateBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:RateQueryResponse)
      }
  
      // @@protoc_insertion_point(class_scope:RateQueryResponse)
      private static final RateQueryResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new RateQueryResponse();
      }
  
      public static RateQueryResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<RateQueryResponse>
          PARSER = new com.google.protobuf.AbstractParser<RateQueryResponse>() {
        public RateQueryResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new RateQueryResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<RateQueryResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<RateQueryResponse> getParserForType() {
        return PARSER;
      }
  
      public RateQueryResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface MonitoringRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MonitoringRequest)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     *监控请求 MessageType.MONITORING_REQUEST
     * </pre>
     *
     * Protobuf type {@code MonitoringRequest}
     */
    public  static final class MonitoringRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MonitoringRequest)
        MonitoringRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use MonitoringRequest.newBuilder() to construct.
      private MonitoringRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private MonitoringRequest() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private MonitoringRequest(
          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 (!parseUnknownField(
                    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 DeviceMessage.internal_static_MonitoringRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_MonitoringRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                MonitoringRequest.class, 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;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof MonitoringRequest)) {
          return super.equals(obj);
        }
        MonitoringRequest other = (MonitoringRequest) obj;
  
        boolean result = true;
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @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 MonitoringRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static MonitoringRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static MonitoringRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static MonitoringRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static MonitoringRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static MonitoringRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static MonitoringRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static MonitoringRequest 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 MonitoringRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static MonitoringRequest 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 MonitoringRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static MonitoringRequest 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(MonitoringRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *监控请求 MessageType.MONITORING_REQUEST
       * </pre>
       *
       * Protobuf type {@code MonitoringRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MonitoringRequest)
          MonitoringRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_MonitoringRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_MonitoringRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  MonitoringRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.MonitoringRequest.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 DeviceMessage.internal_static_MonitoringRequest_descriptor;
        }
  
        public MonitoringRequest getDefaultInstanceForType() {
          return MonitoringRequest.getDefaultInstance();
        }
  
        public MonitoringRequest build() {
          MonitoringRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public MonitoringRequest buildPartial() {
          MonitoringRequest result = new MonitoringRequest(this);
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof MonitoringRequest) {
            return mergeFrom((MonitoringRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(MonitoringRequest other) {
          if (other == MonitoringRequest.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 {
          MonitoringRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (MonitoringRequest) 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.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MonitoringRequest)
      }
  
      // @@protoc_insertion_point(class_scope:MonitoringRequest)
      private static final MonitoringRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new MonitoringRequest();
      }
  
      public static MonitoringRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<MonitoringRequest>
          PARSER = new com.google.protobuf.AbstractParser<MonitoringRequest>() {
        public MonitoringRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new MonitoringRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<MonitoringRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<MonitoringRequest> getParserForType() {
        return PARSER;
      }
  
      public MonitoringRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface MonitoringResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MonitoringResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *设备信息
       * </pre>
       *
       * <code>required .DeviceInfo deviceInfo = 1;</code>
       */
      boolean hasDeviceInfo();
      /**
       * <pre>
       *设备信息
       * </pre>
       *
       * <code>required .DeviceInfo deviceInfo = 1;</code>
       */
      DeviceInfo getDeviceInfo();
      /**
       * <pre>
       *设备信息
       * </pre>
       *
       * <code>required .DeviceInfo deviceInfo = 1;</code>
       */
      DeviceInfoOrBuilder getDeviceInfoOrBuilder();
  
      /**
       * <pre>
       *汽车信息
       * </pre>
       *
       * <code>optional .CarInfo carInfo = 2;</code>
       */
      boolean hasCarInfo();
      /**
       * <pre>
       *汽车信息
       * </pre>
       *
       * <code>optional .CarInfo carInfo = 2;</code>
       */
      CarInfo getCarInfo();
      /**
       * <pre>
       *汽车信息
       * </pre>
       *
       * <code>optional .CarInfo carInfo = 2;</code>
       */
      CarInfoOrBuilder getCarInfoOrBuilder();
    }
    /**
     * <pre>
     *监控回复 MessageType.MONITORING_RESPONSE
     * </pre>
     *
     * Protobuf type {@code MonitoringResponse}
     */
    public  static final class MonitoringResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MonitoringResponse)
        MonitoringResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use MonitoringResponse.newBuilder() to construct.
      private MonitoringResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private MonitoringResponse() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private MonitoringResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                DeviceInfo.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = deviceInfo_.toBuilder();
                }
                deviceInfo_ = input.readMessage(DeviceInfo.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(deviceInfo_);
                  deviceInfo_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 18: {
                CarInfo.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = carInfo_.toBuilder();
                }
                carInfo_ = input.readMessage(CarInfo.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(carInfo_);
                  carInfo_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_MonitoringResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_MonitoringResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                MonitoringResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int DEVICEINFO_FIELD_NUMBER = 1;
      private DeviceInfo deviceInfo_;
      /**
       * <pre>
       *设备信息
       * </pre>
       *
       * <code>required .DeviceInfo deviceInfo = 1;</code>
       */
      public boolean hasDeviceInfo() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *设备信息
       * </pre>
       *
       * <code>required .DeviceInfo deviceInfo = 1;</code>
       */
      public DeviceInfo getDeviceInfo() {
        return deviceInfo_ == null ? DeviceInfo.getDefaultInstance() : deviceInfo_;
      }
      /**
       * <pre>
       *设备信息
       * </pre>
       *
       * <code>required .DeviceInfo deviceInfo = 1;</code>
       */
      public DeviceInfoOrBuilder getDeviceInfoOrBuilder() {
        return deviceInfo_ == null ? DeviceInfo.getDefaultInstance() : deviceInfo_;
      }
  
      public static final int CARINFO_FIELD_NUMBER = 2;
      private CarInfo carInfo_;
      /**
       * <pre>
       *汽车信息
       * </pre>
       *
       * <code>optional .CarInfo carInfo = 2;</code>
       */
      public boolean hasCarInfo() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *汽车信息
       * </pre>
       *
       * <code>optional .CarInfo carInfo = 2;</code>
       */
      public CarInfo getCarInfo() {
        return carInfo_ == null ? CarInfo.getDefaultInstance() : carInfo_;
      }
      /**
       * <pre>
       *汽车信息
       * </pre>
       *
       * <code>optional .CarInfo carInfo = 2;</code>
       */
      public CarInfoOrBuilder getCarInfoOrBuilder() {
        return carInfo_ == null ? CarInfo.getDefaultInstance() : carInfo_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasDeviceInfo()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getDeviceInfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasCarInfo()) {
          if (!getCarInfo().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getDeviceInfo());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getCarInfo());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getDeviceInfo());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getCarInfo());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof MonitoringResponse)) {
          return super.equals(obj);
        }
        MonitoringResponse other = (MonitoringResponse) obj;
  
        boolean result = true;
        result = result && (hasDeviceInfo() == other.hasDeviceInfo());
        if (hasDeviceInfo()) {
          result = result && getDeviceInfo()
              .equals(other.getDeviceInfo());
        }
        result = result && (hasCarInfo() == other.hasCarInfo());
        if (hasCarInfo()) {
          result = result && getCarInfo()
              .equals(other.getCarInfo());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasDeviceInfo()) {
          hash = (37 * hash) + DEVICEINFO_FIELD_NUMBER;
          hash = (53 * hash) + getDeviceInfo().hashCode();
        }
        if (hasCarInfo()) {
          hash = (37 * hash) + CARINFO_FIELD_NUMBER;
          hash = (53 * hash) + getCarInfo().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static MonitoringResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static MonitoringResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static MonitoringResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static MonitoringResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static MonitoringResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static MonitoringResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static MonitoringResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static MonitoringResponse 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 MonitoringResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static MonitoringResponse 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 MonitoringResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static MonitoringResponse 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(MonitoringResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *监控回复 MessageType.MONITORING_RESPONSE
       * </pre>
       *
       * Protobuf type {@code MonitoringResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MonitoringResponse)
          MonitoringResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_MonitoringResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_MonitoringResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  MonitoringResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.MonitoringResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDeviceInfoFieldBuilder();
            getCarInfoFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (deviceInfoBuilder_ == null) {
            deviceInfo_ = null;
          } else {
            deviceInfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (carInfoBuilder_ == null) {
            carInfo_ = null;
          } else {
            carInfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_MonitoringResponse_descriptor;
        }
  
        public MonitoringResponse getDefaultInstanceForType() {
          return MonitoringResponse.getDefaultInstance();
        }
  
        public MonitoringResponse build() {
          MonitoringResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public MonitoringResponse buildPartial() {
          MonitoringResponse result = new MonitoringResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (deviceInfoBuilder_ == null) {
            result.deviceInfo_ = deviceInfo_;
          } else {
            result.deviceInfo_ = deviceInfoBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (carInfoBuilder_ == null) {
            result.carInfo_ = carInfo_;
          } else {
            result.carInfo_ = carInfoBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof MonitoringResponse) {
            return mergeFrom((MonitoringResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(MonitoringResponse other) {
          if (other == MonitoringResponse.getDefaultInstance()) return this;
          if (other.hasDeviceInfo()) {
            mergeDeviceInfo(other.getDeviceInfo());
          }
          if (other.hasCarInfo()) {
            mergeCarInfo(other.getCarInfo());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasDeviceInfo()) {
            return false;
          }
          if (!getDeviceInfo().isInitialized()) {
            return false;
          }
          if (hasCarInfo()) {
            if (!getCarInfo().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          MonitoringResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (MonitoringResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private DeviceInfo deviceInfo_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            DeviceInfo, DeviceInfo.Builder, DeviceInfoOrBuilder> deviceInfoBuilder_;
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        public boolean hasDeviceInfo() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        public DeviceInfo getDeviceInfo() {
          if (deviceInfoBuilder_ == null) {
            return deviceInfo_ == null ? DeviceInfo.getDefaultInstance() : deviceInfo_;
          } else {
            return deviceInfoBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        public Builder setDeviceInfo(DeviceInfo value) {
          if (deviceInfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            deviceInfo_ = value;
            onChanged();
          } else {
            deviceInfoBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        public Builder setDeviceInfo(
            DeviceInfo.Builder builderForValue) {
          if (deviceInfoBuilder_ == null) {
            deviceInfo_ = builderForValue.build();
            onChanged();
          } else {
            deviceInfoBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        public Builder mergeDeviceInfo(DeviceInfo value) {
          if (deviceInfoBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                deviceInfo_ != null &&
                deviceInfo_ != DeviceInfo.getDefaultInstance()) {
              deviceInfo_ =
                DeviceInfo.newBuilder(deviceInfo_).mergeFrom(value).buildPartial();
            } else {
              deviceInfo_ = value;
            }
            onChanged();
          } else {
            deviceInfoBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        public Builder clearDeviceInfo() {
          if (deviceInfoBuilder_ == null) {
            deviceInfo_ = null;
            onChanged();
          } else {
            deviceInfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        public DeviceInfo.Builder getDeviceInfoBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getDeviceInfoFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        public DeviceInfoOrBuilder getDeviceInfoOrBuilder() {
          if (deviceInfoBuilder_ != null) {
            return deviceInfoBuilder_.getMessageOrBuilder();
          } else {
            return deviceInfo_ == null ?
                DeviceInfo.getDefaultInstance() : deviceInfo_;
          }
        }
        /**
         * <pre>
         *设备信息
         * </pre>
         *
         * <code>required .DeviceInfo deviceInfo = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            DeviceInfo, DeviceInfo.Builder, DeviceInfoOrBuilder>
            getDeviceInfoFieldBuilder() {
          if (deviceInfoBuilder_ == null) {
            deviceInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                DeviceInfo, DeviceInfo.Builder, DeviceInfoOrBuilder>(
                    getDeviceInfo(),
                    getParentForChildren(),
                    isClean());
            deviceInfo_ = null;
          }
          return deviceInfoBuilder_;
        }
  
        private CarInfo carInfo_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            CarInfo, CarInfo.Builder, CarInfoOrBuilder> carInfoBuilder_;
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        public boolean hasCarInfo() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        public CarInfo getCarInfo() {
          if (carInfoBuilder_ == null) {
            return carInfo_ == null ? CarInfo.getDefaultInstance() : carInfo_;
          } else {
            return carInfoBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        public Builder setCarInfo(CarInfo value) {
          if (carInfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            carInfo_ = value;
            onChanged();
          } else {
            carInfoBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        public Builder setCarInfo(
            CarInfo.Builder builderForValue) {
          if (carInfoBuilder_ == null) {
            carInfo_ = builderForValue.build();
            onChanged();
          } else {
            carInfoBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        public Builder mergeCarInfo(CarInfo value) {
          if (carInfoBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                carInfo_ != null &&
                carInfo_ != CarInfo.getDefaultInstance()) {
              carInfo_ =
                CarInfo.newBuilder(carInfo_).mergeFrom(value).buildPartial();
            } else {
              carInfo_ = value;
            }
            onChanged();
          } else {
            carInfoBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        public Builder clearCarInfo() {
          if (carInfoBuilder_ == null) {
            carInfo_ = null;
            onChanged();
          } else {
            carInfoBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        public CarInfo.Builder getCarInfoBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getCarInfoFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        public CarInfoOrBuilder getCarInfoOrBuilder() {
          if (carInfoBuilder_ != null) {
            return carInfoBuilder_.getMessageOrBuilder();
          } else {
            return carInfo_ == null ?
                CarInfo.getDefaultInstance() : carInfo_;
          }
        }
        /**
         * <pre>
         *汽车信息
         * </pre>
         *
         * <code>optional .CarInfo carInfo = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            CarInfo, CarInfo.Builder, CarInfoOrBuilder>
            getCarInfoFieldBuilder() {
          if (carInfoBuilder_ == null) {
            carInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                CarInfo, CarInfo.Builder, CarInfoOrBuilder>(
                    getCarInfo(),
                    getParentForChildren(),
                    isClean());
            carInfo_ = null;
          }
          return carInfoBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MonitoringResponse)
      }
  
      // @@protoc_insertion_point(class_scope:MonitoringResponse)
      private static final MonitoringResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new MonitoringResponse();
      }
  
      public static MonitoringResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<MonitoringResponse>
          PARSER = new com.google.protobuf.AbstractParser<MonitoringResponse>() {
        public MonitoringResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new MonitoringResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<MonitoringResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<MonitoringResponse> getParserForType() {
        return PARSER;
      }
  
      public MonitoringResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ControlRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ControlRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .ControlCommand cmd = 1;</code>
       */
      boolean hasCmd();
      /**
       * <code>required .ControlCommand cmd = 1;</code>
       */
      ControlCommand getCmd();
    }
    /**
     * <pre>
     *设备控制请求 MessageType.DEVICE_CONTROL_REQUEST
     * </pre>
     *
     * Protobuf type {@code ControlRequest}
     */
    public  static final class ControlRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ControlRequest)
        ControlRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ControlRequest.newBuilder() to construct.
      private ControlRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ControlRequest() {
        cmd_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ControlRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                ControlCommand value = ControlCommand.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  cmd_ = rawValue;
                }
                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 DeviceMessage.internal_static_ControlRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ControlRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ControlRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int CMD_FIELD_NUMBER = 1;
      private int cmd_;
      /**
       * <code>required .ControlCommand cmd = 1;</code>
       */
      public boolean hasCmd() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .ControlCommand cmd = 1;</code>
       */
      public ControlCommand getCmd() {
        ControlCommand result = ControlCommand.valueOf(cmd_);
        return result == null ? ControlCommand.WORKING : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCmd()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, cmd_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, cmd_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ControlRequest)) {
          return super.equals(obj);
        }
        ControlRequest other = (ControlRequest) obj;
  
        boolean result = true;
        result = result && (hasCmd() == other.hasCmd());
        if (hasCmd()) {
          result = result && cmd_ == other.cmd_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCmd()) {
          hash = (37 * hash) + CMD_FIELD_NUMBER;
          hash = (53 * hash) + cmd_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ControlRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ControlRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ControlRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ControlRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ControlRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ControlRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ControlRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ControlRequest 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 ControlRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ControlRequest 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 ControlRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ControlRequest 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(ControlRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备控制请求 MessageType.DEVICE_CONTROL_REQUEST
       * </pre>
       *
       * Protobuf type {@code ControlRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ControlRequest)
          ControlRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ControlRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ControlRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ControlRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ControlRequest.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();
          cmd_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ControlRequest_descriptor;
        }
  
        public ControlRequest getDefaultInstanceForType() {
          return ControlRequest.getDefaultInstance();
        }
  
        public ControlRequest build() {
          ControlRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ControlRequest buildPartial() {
          ControlRequest result = new ControlRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.cmd_ = cmd_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ControlRequest) {
            return mergeFrom((ControlRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ControlRequest other) {
          if (other == ControlRequest.getDefaultInstance()) return this;
          if (other.hasCmd()) {
            setCmd(other.getCmd());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasCmd()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ControlRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ControlRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int cmd_ = 0;
        /**
         * <code>required .ControlCommand cmd = 1;</code>
         */
        public boolean hasCmd() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .ControlCommand cmd = 1;</code>
         */
        public ControlCommand getCmd() {
          ControlCommand result = ControlCommand.valueOf(cmd_);
          return result == null ? ControlCommand.WORKING : result;
        }
        /**
         * <code>required .ControlCommand cmd = 1;</code>
         */
        public Builder setCmd(ControlCommand value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          cmd_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .ControlCommand cmd = 1;</code>
         */
        public Builder clearCmd() {
          bitField0_ = (bitField0_ & ~0x00000001);
          cmd_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ControlRequest)
      }
  
      // @@protoc_insertion_point(class_scope:ControlRequest)
      private static final ControlRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ControlRequest();
      }
  
      public static ControlRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ControlRequest>
          PARSER = new com.google.protobuf.AbstractParser<ControlRequest>() {
        public ControlRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ControlRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ControlRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ControlRequest> getParserForType() {
        return PARSER;
      }
  
      public ControlRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ControlResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ControlResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
  
      /**
       * <code>required .ControlCommand cmd = 2;</code>
       */
      boolean hasCmd();
      /**
       * <code>required .ControlCommand cmd = 2;</code>
       */
      ControlCommand getCmd();
    }
    /**
     * <pre>
     *设备控制回复 MessageType.DEVICE_CONTROL_RESPONSE
     * </pre>
     *
     * Protobuf type {@code ControlResponse}
     */
    public  static final class ControlResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ControlResponse)
        ControlResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ControlResponse.newBuilder() to construct.
      private ControlResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ControlResponse() {
        statusCode_ = 0;
        cmd_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ControlResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                ControlCommand value = ControlCommand.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  cmd_ = rawValue;
                }
                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 DeviceMessage.internal_static_ControlResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ControlResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ControlResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      public static final int CMD_FIELD_NUMBER = 2;
      private int cmd_;
      /**
       * <code>required .ControlCommand cmd = 2;</code>
       */
      public boolean hasCmd() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .ControlCommand cmd = 2;</code>
       */
      public ControlCommand getCmd() {
        ControlCommand result = ControlCommand.valueOf(cmd_);
        return result == null ? ControlCommand.WORKING : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasCmd()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeEnum(2, cmd_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, cmd_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ControlResponse)) {
          return super.equals(obj);
        }
        ControlResponse other = (ControlResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && (hasCmd() == other.hasCmd());
        if (hasCmd()) {
          result = result && cmd_ == other.cmd_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        if (hasCmd()) {
          hash = (37 * hash) + CMD_FIELD_NUMBER;
          hash = (53 * hash) + cmd_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ControlResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ControlResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ControlResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ControlResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ControlResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ControlResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ControlResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ControlResponse 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 ControlResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ControlResponse 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 ControlResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ControlResponse 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(ControlResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备控制回复 MessageType.DEVICE_CONTROL_RESPONSE
       * </pre>
       *
       * Protobuf type {@code ControlResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ControlResponse)
          ControlResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ControlResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ControlResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ControlResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ControlResponse.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          cmd_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ControlResponse_descriptor;
        }
  
        public ControlResponse getDefaultInstanceForType() {
          return ControlResponse.getDefaultInstance();
        }
  
        public ControlResponse build() {
          ControlResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ControlResponse buildPartial() {
          ControlResponse result = new ControlResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.cmd_ = cmd_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ControlResponse) {
            return mergeFrom((ControlResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ControlResponse other) {
          if (other == ControlResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          if (other.hasCmd()) {
            setCmd(other.getCmd());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          if (!hasCmd()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ControlResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ControlResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
  
        private int cmd_ = 0;
        /**
         * <code>required .ControlCommand cmd = 2;</code>
         */
        public boolean hasCmd() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .ControlCommand cmd = 2;</code>
         */
        public ControlCommand getCmd() {
          ControlCommand result = ControlCommand.valueOf(cmd_);
          return result == null ? ControlCommand.WORKING : result;
        }
        /**
         * <code>required .ControlCommand cmd = 2;</code>
         */
        public Builder setCmd(ControlCommand value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          cmd_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .ControlCommand cmd = 2;</code>
         */
        public Builder clearCmd() {
          bitField0_ = (bitField0_ & ~0x00000002);
          cmd_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ControlResponse)
      }
  
      // @@protoc_insertion_point(class_scope:ControlResponse)
      private static final ControlResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ControlResponse();
      }
  
      public static ControlResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ControlResponse>
          PARSER = new com.google.protobuf.AbstractParser<ControlResponse>() {
        public ControlResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ControlResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ControlResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ControlResponse> getParserForType() {
        return PARSER;
      }
  
      public ControlResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UpgradeRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:UpgradeRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string url = 1;</code>
       */
      boolean hasUrl();
      /**
       * <code>required string url = 1;</code>
       */
      String getUrl();
      /**
       * <code>required string url = 1;</code>
       */
      com.google.protobuf.ByteString
          getUrlBytes();
    }
    /**
     * <pre>
     *设备升级固件 MessageType.UPGRADE_REQUEST
     * </pre>
     *
     * Protobuf type {@code UpgradeRequest}
     */
    public  static final class UpgradeRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:UpgradeRequest)
        UpgradeRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use UpgradeRequest.newBuilder() to construct.
      private UpgradeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UpgradeRequest() {
        url_ = "";
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private UpgradeRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                url_ = bs;
                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 DeviceMessage.internal_static_UpgradeRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_UpgradeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UpgradeRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int URL_FIELD_NUMBER = 1;
      private volatile Object url_;
      /**
       * <code>required string url = 1;</code>
       */
      public boolean hasUrl() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string url = 1;</code>
       */
      public String getUrl() {
        Object ref = url_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            url_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string url = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          url_ = 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;
  
        if (!hasUrl()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, url_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, url_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof UpgradeRequest)) {
          return super.equals(obj);
        }
        UpgradeRequest other = (UpgradeRequest) obj;
  
        boolean result = true;
        result = result && (hasUrl() == other.hasUrl());
        if (hasUrl()) {
          result = result && getUrl()
              .equals(other.getUrl());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasUrl()) {
          hash = (37 * hash) + URL_FIELD_NUMBER;
          hash = (53 * hash) + getUrl().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static UpgradeRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static UpgradeRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static UpgradeRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static UpgradeRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static UpgradeRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static UpgradeRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static UpgradeRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static UpgradeRequest 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 UpgradeRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static UpgradeRequest 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 UpgradeRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static UpgradeRequest 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(UpgradeRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备升级固件 MessageType.UPGRADE_REQUEST
       * </pre>
       *
       * Protobuf type {@code UpgradeRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:UpgradeRequest)
          UpgradeRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_UpgradeRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_UpgradeRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  UpgradeRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.UpgradeRequest.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();
          url_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_UpgradeRequest_descriptor;
        }
  
        public UpgradeRequest getDefaultInstanceForType() {
          return UpgradeRequest.getDefaultInstance();
        }
  
        public UpgradeRequest build() {
          UpgradeRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public UpgradeRequest buildPartial() {
          UpgradeRequest result = new UpgradeRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.url_ = url_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof UpgradeRequest) {
            return mergeFrom((UpgradeRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(UpgradeRequest other) {
          if (other == UpgradeRequest.getDefaultInstance()) return this;
          if (other.hasUrl()) {
            bitField0_ |= 0x00000001;
            url_ = other.url_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasUrl()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          UpgradeRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (UpgradeRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Object url_ = "";
        /**
         * <code>required string url = 1;</code>
         */
        public boolean hasUrl() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required string url = 1;</code>
         */
        public String getUrl() {
          Object ref = url_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              url_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <code>required string url = 1;</code>
         */
        public com.google.protobuf.ByteString
            getUrlBytes() {
          Object ref = url_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            url_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string url = 1;</code>
         */
        public Builder setUrl(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          url_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string url = 1;</code>
         */
        public Builder clearUrl() {
          bitField0_ = (bitField0_ & ~0x00000001);
          url_ = getDefaultInstance().getUrl();
          onChanged();
          return this;
        }
        /**
         * <code>required string url = 1;</code>
         */
        public Builder setUrlBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          url_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:UpgradeRequest)
      }
  
      // @@protoc_insertion_point(class_scope:UpgradeRequest)
      private static final UpgradeRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new UpgradeRequest();
      }
  
      public static UpgradeRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<UpgradeRequest>
          PARSER = new com.google.protobuf.AbstractParser<UpgradeRequest>() {
        public UpgradeRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new UpgradeRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<UpgradeRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<UpgradeRequest> getParserForType() {
        return PARSER;
      }
  
      public UpgradeRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UpgradeResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:UpgradeResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
    }
    /**
     * <pre>
     *设备升级固件 MessageType.UPGRADE_RESPONSE
     * </pre>
     *
     * Protobuf type {@code UpgradeResponse}
     */
    public  static final class UpgradeResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:UpgradeResponse)
        UpgradeResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use UpgradeResponse.newBuilder() to construct.
      private UpgradeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UpgradeResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private UpgradeResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                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 DeviceMessage.internal_static_UpgradeResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_UpgradeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                UpgradeResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof UpgradeResponse)) {
          return super.equals(obj);
        }
        UpgradeResponse other = (UpgradeResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static UpgradeResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static UpgradeResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static UpgradeResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static UpgradeResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static UpgradeResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static UpgradeResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static UpgradeResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static UpgradeResponse 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 UpgradeResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static UpgradeResponse 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 UpgradeResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static UpgradeResponse 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(UpgradeResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备升级固件 MessageType.UPGRADE_RESPONSE
       * </pre>
       *
       * Protobuf type {@code UpgradeResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:UpgradeResponse)
          UpgradeResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_UpgradeResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_UpgradeResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  UpgradeResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.UpgradeResponse.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_UpgradeResponse_descriptor;
        }
  
        public UpgradeResponse getDefaultInstanceForType() {
          return UpgradeResponse.getDefaultInstance();
        }
  
        public UpgradeResponse build() {
          UpgradeResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public UpgradeResponse buildPartial() {
          UpgradeResponse result = new UpgradeResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof UpgradeResponse) {
            return mergeFrom((UpgradeResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(UpgradeResponse other) {
          if (other == UpgradeResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          UpgradeResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (UpgradeResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:UpgradeResponse)
      }
  
      // @@protoc_insertion_point(class_scope:UpgradeResponse)
      private static final UpgradeResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new UpgradeResponse();
      }
  
      public static UpgradeResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<UpgradeResponse>
          PARSER = new com.google.protobuf.AbstractParser<UpgradeResponse>() {
        public UpgradeResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new UpgradeResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<UpgradeResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<UpgradeResponse> getParserForType() {
        return PARSER;
      }
  
      public UpgradeResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ReserveRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ReserveRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .FullDate date = 1;</code>
       */
      boolean hasDate();
      /**
       * <code>required .FullDate date = 1;</code>
       */
      FullDate getDate();
      /**
       * <code>required .FullDate date = 1;</code>
       */
      FullDateOrBuilder getDateOrBuilder();
  
      /**
       * <code>required .Order order = 2;</code>
       */
      boolean hasOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      Order getOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      OrderOrBuilder getOrderOrBuilder();
    }
    /**
     * <pre>
     *设备预约请求 MessageType.RESERVE_REQUEST
     * </pre>
     *
     * Protobuf type {@code ReserveRequest}
     */
    public  static final class ReserveRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ReserveRequest)
        ReserveRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ReserveRequest.newBuilder() to construct.
      private ReserveRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ReserveRequest() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ReserveRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                FullDate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = date_.toBuilder();
                }
                date_ = input.readMessage(FullDate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(date_);
                  date_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 18: {
                Order.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(Order.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_ReserveRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ReserveRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ReserveRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int DATE_FIELD_NUMBER = 1;
      private FullDate date_;
      /**
       * <code>required .FullDate date = 1;</code>
       */
      public boolean hasDate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .FullDate date = 1;</code>
       */
      public FullDate getDate() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
      /**
       * <code>required .FullDate date = 1;</code>
       */
      public FullDateOrBuilder getDateOrBuilder() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
  
      public static final int ORDER_FIELD_NUMBER = 2;
      private Order order_;
      /**
       * <code>required .Order order = 2;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public Order getOrder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public OrderOrBuilder getOrderOrBuilder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasDate()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOrder()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getDate().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getOrder().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getDate());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getOrder());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getDate());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getOrder());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ReserveRequest)) {
          return super.equals(obj);
        }
        ReserveRequest other = (ReserveRequest) obj;
  
        boolean result = true;
        result = result && (hasDate() == other.hasDate());
        if (hasDate()) {
          result = result && getDate()
              .equals(other.getDate());
        }
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasDate()) {
          hash = (37 * hash) + DATE_FIELD_NUMBER;
          hash = (53 * hash) + getDate().hashCode();
        }
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ReserveRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveRequest 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 ReserveRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ReserveRequest 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 ReserveRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveRequest 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(ReserveRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备预约请求 MessageType.RESERVE_REQUEST
       * </pre>
       *
       * Protobuf type {@code ReserveRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ReserveRequest)
          ReserveRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ReserveRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ReserveRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ReserveRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ReserveRequest.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDateFieldBuilder();
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (dateBuilder_ == null) {
            date_ = null;
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ReserveRequest_descriptor;
        }
  
        public ReserveRequest getDefaultInstanceForType() {
          return ReserveRequest.getDefaultInstance();
        }
  
        public ReserveRequest build() {
          ReserveRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ReserveRequest buildPartial() {
          ReserveRequest result = new ReserveRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (dateBuilder_ == null) {
            result.date_ = date_;
          } else {
            result.date_ = dateBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ReserveRequest) {
            return mergeFrom((ReserveRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ReserveRequest other) {
          if (other == ReserveRequest.getDefaultInstance()) return this;
          if (other.hasDate()) {
            mergeDate(other.getDate());
          }
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasDate()) {
            return false;
          }
          if (!hasOrder()) {
            return false;
          }
          if (!getDate().isInitialized()) {
            return false;
          }
          if (!getOrder().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ReserveRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ReserveRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private FullDate date_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder> dateBuilder_;
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public boolean hasDate() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public FullDate getDate() {
          if (dateBuilder_ == null) {
            return date_ == null ? FullDate.getDefaultInstance() : date_;
          } else {
            return dateBuilder_.getMessage();
          }
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public Builder setDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            date_ = value;
            onChanged();
          } else {
            dateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public Builder setDate(
            FullDate.Builder builderForValue) {
          if (dateBuilder_ == null) {
            date_ = builderForValue.build();
            onChanged();
          } else {
            dateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public Builder mergeDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                date_ != null &&
                date_ != FullDate.getDefaultInstance()) {
              date_ =
                FullDate.newBuilder(date_).mergeFrom(value).buildPartial();
            } else {
              date_ = value;
            }
            onChanged();
          } else {
            dateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public Builder clearDate() {
          if (dateBuilder_ == null) {
            date_ = null;
            onChanged();
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public FullDate.Builder getDateBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getDateFieldBuilder().getBuilder();
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public FullDateOrBuilder getDateOrBuilder() {
          if (dateBuilder_ != null) {
            return dateBuilder_.getMessageOrBuilder();
          } else {
            return date_ == null ?
                FullDate.getDefaultInstance() : date_;
          }
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder>
            getDateFieldBuilder() {
          if (dateBuilder_ == null) {
            dateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                FullDate, FullDate.Builder, FullDateOrBuilder>(
                    getDate(),
                    getParentForChildren(),
                    isClean());
            date_ = null;
          }
          return dateBuilder_;
        }
  
        private Order order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder> orderBuilder_;
        /**
         * <code>required .Order order = 2;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? Order.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(
            Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder mergeOrder(Order value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                order_ != null &&
                order_ != Order.getDefaultInstance()) {
              order_ =
                Order.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order.Builder getOrderBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public OrderOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                Order.getDefaultInstance() : order_;
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Order, Order.Builder, OrderOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ReserveRequest)
      }
  
      // @@protoc_insertion_point(class_scope:ReserveRequest)
      private static final ReserveRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ReserveRequest();
      }
  
      public static ReserveRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ReserveRequest>
          PARSER = new com.google.protobuf.AbstractParser<ReserveRequest>() {
        public ReserveRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ReserveRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ReserveRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ReserveRequest> getParserForType() {
        return PARSER;
      }
  
      public ReserveRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ReserveResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ReserveResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
  
      /**
       * <code>required .Order order = 2;</code>
       */
      boolean hasOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      Order getOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      OrderOrBuilder getOrderOrBuilder();
    }
    /**
     * <pre>
     *设备预约回复 MessageType.RESERVE_RESPONSE
     * </pre>
     *
     * Protobuf type {@code ReserveResponse}
     */
    public  static final class ReserveResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ReserveResponse)
        ReserveResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ReserveResponse.newBuilder() to construct.
      private ReserveResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ReserveResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ReserveResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                break;
              }
              case 18: {
                Order.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(Order.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_ReserveResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ReserveResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ReserveResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      public static final int ORDER_FIELD_NUMBER = 2;
      private Order order_;
      /**
       * <code>required .Order order = 2;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public Order getOrder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public OrderOrBuilder getOrderOrBuilder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOrder()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getOrder().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getOrder());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getOrder());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ReserveResponse)) {
          return super.equals(obj);
        }
        ReserveResponse other = (ReserveResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ReserveResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveResponse 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 ReserveResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ReserveResponse 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 ReserveResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveResponse 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(ReserveResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备预约回复 MessageType.RESERVE_RESPONSE
       * </pre>
       *
       * Protobuf type {@code ReserveResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ReserveResponse)
          ReserveResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ReserveResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ReserveResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ReserveResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ReserveResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ReserveResponse_descriptor;
        }
  
        public ReserveResponse getDefaultInstanceForType() {
          return ReserveResponse.getDefaultInstance();
        }
  
        public ReserveResponse build() {
          ReserveResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ReserveResponse buildPartial() {
          ReserveResponse result = new ReserveResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ReserveResponse) {
            return mergeFrom((ReserveResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ReserveResponse other) {
          if (other == ReserveResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          if (!hasOrder()) {
            return false;
          }
          if (!getOrder().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ReserveResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ReserveResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
  
        private Order order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder> orderBuilder_;
        /**
         * <code>required .Order order = 2;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? Order.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(
            Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder mergeOrder(Order value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                order_ != null &&
                order_ != Order.getDefaultInstance()) {
              order_ =
                Order.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order.Builder getOrderBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public OrderOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                Order.getDefaultInstance() : order_;
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Order, Order.Builder, OrderOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ReserveResponse)
      }
  
      // @@protoc_insertion_point(class_scope:ReserveResponse)
      private static final ReserveResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ReserveResponse();
      }
  
      public static ReserveResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ReserveResponse>
          PARSER = new com.google.protobuf.AbstractParser<ReserveResponse>() {
        public ReserveResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ReserveResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ReserveResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ReserveResponse> getParserForType() {
        return PARSER;
      }
  
      public ReserveResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ReserveCancelRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ReserveCancelRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .Order order = 1;</code>
       */
      boolean hasOrder();
      /**
       * <code>required .Order order = 1;</code>
       */
      Order getOrder();
      /**
       * <code>required .Order order = 1;</code>
       */
      OrderOrBuilder getOrderOrBuilder();
    }
    /**
     * <pre>
     *设备预约取消请求 MessageType.RESERVE_CANCEL_REQUEST
     * </pre>
     *
     * Protobuf type {@code ReserveCancelRequest}
     */
    public  static final class ReserveCancelRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ReserveCancelRequest)
        ReserveCancelRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ReserveCancelRequest.newBuilder() to construct.
      private ReserveCancelRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ReserveCancelRequest() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ReserveCancelRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                Order.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(Order.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                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 DeviceMessage.internal_static_ReserveCancelRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ReserveCancelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ReserveCancelRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int ORDER_FIELD_NUMBER = 1;
      private Order order_;
      /**
       * <code>required .Order order = 1;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .Order order = 1;</code>
       */
      public Order getOrder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
      /**
       * <code>required .Order order = 1;</code>
       */
      public OrderOrBuilder getOrderOrBuilder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasOrder()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getOrder().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getOrder());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getOrder());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ReserveCancelRequest)) {
          return super.equals(obj);
        }
        ReserveCancelRequest other = (ReserveCancelRequest) obj;
  
        boolean result = true;
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ReserveCancelRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveCancelRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveCancelRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveCancelRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveCancelRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveCancelRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveCancelRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveCancelRequest 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 ReserveCancelRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ReserveCancelRequest 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 ReserveCancelRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveCancelRequest 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(ReserveCancelRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备预约取消请求 MessageType.RESERVE_CANCEL_REQUEST
       * </pre>
       *
       * Protobuf type {@code ReserveCancelRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ReserveCancelRequest)
          ReserveCancelRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ReserveCancelRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ReserveCancelRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ReserveCancelRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ReserveCancelRequest.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ReserveCancelRequest_descriptor;
        }
  
        public ReserveCancelRequest getDefaultInstanceForType() {
          return ReserveCancelRequest.getDefaultInstance();
        }
  
        public ReserveCancelRequest build() {
          ReserveCancelRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ReserveCancelRequest buildPartial() {
          ReserveCancelRequest result = new ReserveCancelRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ReserveCancelRequest) {
            return mergeFrom((ReserveCancelRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ReserveCancelRequest other) {
          if (other == ReserveCancelRequest.getDefaultInstance()) return this;
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasOrder()) {
            return false;
          }
          if (!getOrder().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ReserveCancelRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ReserveCancelRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private Order order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder> orderBuilder_;
        /**
         * <code>required .Order order = 1;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .Order order = 1;</code>
         */
        public Order getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? Order.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Order order = 1;</code>
         */
        public Builder setOrder(Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Order order = 1;</code>
         */
        public Builder setOrder(
            Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Order order = 1;</code>
         */
        public Builder mergeOrder(Order value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                order_ != null &&
                order_ != Order.getDefaultInstance()) {
              order_ =
                Order.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Order order = 1;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <code>required .Order order = 1;</code>
         */
        public Order.Builder getOrderBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Order order = 1;</code>
         */
        public OrderOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                Order.getDefaultInstance() : order_;
          }
        }
        /**
         * <code>required .Order order = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Order, Order.Builder, OrderOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ReserveCancelRequest)
      }
  
      // @@protoc_insertion_point(class_scope:ReserveCancelRequest)
      private static final ReserveCancelRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ReserveCancelRequest();
      }
  
      public static ReserveCancelRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ReserveCancelRequest>
          PARSER = new com.google.protobuf.AbstractParser<ReserveCancelRequest>() {
        public ReserveCancelRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ReserveCancelRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ReserveCancelRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ReserveCancelRequest> getParserForType() {
        return PARSER;
      }
  
      public ReserveCancelRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ReserveCancelResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ReserveCancelResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
  
      /**
       * <code>required .Order order = 2;</code>
       */
      boolean hasOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      Order getOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      OrderOrBuilder getOrderOrBuilder();
    }
    /**
     * <pre>
     *设备预约取消回复 MessageType.RESERVE_CANCEL_RESPONSE
     * </pre>
     *
     * Protobuf type {@code ReserveCancelResponse}
     */
    public  static final class ReserveCancelResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ReserveCancelResponse)
        ReserveCancelResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ReserveCancelResponse.newBuilder() to construct.
      private ReserveCancelResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ReserveCancelResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ReserveCancelResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                break;
              }
              case 18: {
                Order.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(Order.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_ReserveCancelResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ReserveCancelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ReserveCancelResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      public static final int ORDER_FIELD_NUMBER = 2;
      private Order order_;
      /**
       * <code>required .Order order = 2;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public Order getOrder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public OrderOrBuilder getOrderOrBuilder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOrder()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getOrder().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getOrder());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getOrder());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ReserveCancelResponse)) {
          return super.equals(obj);
        }
        ReserveCancelResponse other = (ReserveCancelResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ReserveCancelResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveCancelResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveCancelResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveCancelResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveCancelResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveCancelResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveCancelResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveCancelResponse 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 ReserveCancelResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ReserveCancelResponse 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 ReserveCancelResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveCancelResponse 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(ReserveCancelResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备预约取消回复 MessageType.RESERVE_CANCEL_RESPONSE
       * </pre>
       *
       * Protobuf type {@code ReserveCancelResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ReserveCancelResponse)
          ReserveCancelResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ReserveCancelResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ReserveCancelResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ReserveCancelResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ReserveCancelResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ReserveCancelResponse_descriptor;
        }
  
        public ReserveCancelResponse getDefaultInstanceForType() {
          return ReserveCancelResponse.getDefaultInstance();
        }
  
        public ReserveCancelResponse build() {
          ReserveCancelResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ReserveCancelResponse buildPartial() {
          ReserveCancelResponse result = new ReserveCancelResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ReserveCancelResponse) {
            return mergeFrom((ReserveCancelResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ReserveCancelResponse other) {
          if (other == ReserveCancelResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          if (!hasOrder()) {
            return false;
          }
          if (!getOrder().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ReserveCancelResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ReserveCancelResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
  
        private Order order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder> orderBuilder_;
        /**
         * <code>required .Order order = 2;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? Order.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(
            Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder mergeOrder(Order value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                order_ != null &&
                order_ != Order.getDefaultInstance()) {
              order_ =
                Order.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order.Builder getOrderBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public OrderOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                Order.getDefaultInstance() : order_;
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Order, Order.Builder, OrderOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ReserveCancelResponse)
      }
  
      // @@protoc_insertion_point(class_scope:ReserveCancelResponse)
      private static final ReserveCancelResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ReserveCancelResponse();
      }
  
      public static ReserveCancelResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ReserveCancelResponse>
          PARSER = new com.google.protobuf.AbstractParser<ReserveCancelResponse>() {
        public ReserveCancelResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ReserveCancelResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ReserveCancelResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ReserveCancelResponse> getParserForType() {
        return PARSER;
      }
  
      public ReserveCancelResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ReserveQueryRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ReserveQueryRequest)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     *设备预约查询请求 MessageType.RESERVE_QUERY_REQUEST
     * </pre>
     *
     * Protobuf type {@code ReserveQueryRequest}
     */
    public  static final class ReserveQueryRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ReserveQueryRequest)
        ReserveQueryRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ReserveQueryRequest.newBuilder() to construct.
      private ReserveQueryRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ReserveQueryRequest() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ReserveQueryRequest(
          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 (!parseUnknownField(
                    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 DeviceMessage.internal_static_ReserveQueryRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ReserveQueryRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ReserveQueryRequest.class, 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;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ReserveQueryRequest)) {
          return super.equals(obj);
        }
        ReserveQueryRequest other = (ReserveQueryRequest) obj;
  
        boolean result = true;
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @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 ReserveQueryRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveQueryRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveQueryRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveQueryRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveQueryRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveQueryRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveQueryRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveQueryRequest 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 ReserveQueryRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ReserveQueryRequest 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 ReserveQueryRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveQueryRequest 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(ReserveQueryRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备预约查询请求 MessageType.RESERVE_QUERY_REQUEST
       * </pre>
       *
       * Protobuf type {@code ReserveQueryRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ReserveQueryRequest)
          ReserveQueryRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ReserveQueryRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ReserveQueryRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ReserveQueryRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ReserveQueryRequest.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 DeviceMessage.internal_static_ReserveQueryRequest_descriptor;
        }
  
        public ReserveQueryRequest getDefaultInstanceForType() {
          return ReserveQueryRequest.getDefaultInstance();
        }
  
        public ReserveQueryRequest build() {
          ReserveQueryRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ReserveQueryRequest buildPartial() {
          ReserveQueryRequest result = new ReserveQueryRequest(this);
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ReserveQueryRequest) {
            return mergeFrom((ReserveQueryRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ReserveQueryRequest other) {
          if (other == ReserveQueryRequest.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 {
          ReserveQueryRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ReserveQueryRequest) 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.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ReserveQueryRequest)
      }
  
      // @@protoc_insertion_point(class_scope:ReserveQueryRequest)
      private static final ReserveQueryRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ReserveQueryRequest();
      }
  
      public static ReserveQueryRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ReserveQueryRequest>
          PARSER = new com.google.protobuf.AbstractParser<ReserveQueryRequest>() {
        public ReserveQueryRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ReserveQueryRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ReserveQueryRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ReserveQueryRequest> getParserForType() {
        return PARSER;
      }
  
      public ReserveQueryRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ReserveQueryResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ReserveQueryResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .FullDate date = 1;</code>
       */
      boolean hasDate();
      /**
       * <code>required .FullDate date = 1;</code>
       */
      FullDate getDate();
      /**
       * <code>required .FullDate date = 1;</code>
       */
      FullDateOrBuilder getDateOrBuilder();
  
      /**
       * <code>required .Order order = 2;</code>
       */
      boolean hasOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      Order getOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      OrderOrBuilder getOrderOrBuilder();
    }
    /**
     * <pre>
     *设备预约查询回复 MessageType.RESERVE_QUERY_RESPONSE
     * </pre>
     *
     * Protobuf type {@code ReserveQueryResponse}
     */
    public  static final class ReserveQueryResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ReserveQueryResponse)
        ReserveQueryResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ReserveQueryResponse.newBuilder() to construct.
      private ReserveQueryResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ReserveQueryResponse() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ReserveQueryResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                FullDate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = date_.toBuilder();
                }
                date_ = input.readMessage(FullDate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(date_);
                  date_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 18: {
                Order.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(Order.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_ReserveQueryResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ReserveQueryResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ReserveQueryResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int DATE_FIELD_NUMBER = 1;
      private FullDate date_;
      /**
       * <code>required .FullDate date = 1;</code>
       */
      public boolean hasDate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .FullDate date = 1;</code>
       */
      public FullDate getDate() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
      /**
       * <code>required .FullDate date = 1;</code>
       */
      public FullDateOrBuilder getDateOrBuilder() {
        return date_ == null ? FullDate.getDefaultInstance() : date_;
      }
  
      public static final int ORDER_FIELD_NUMBER = 2;
      private Order order_;
      /**
       * <code>required .Order order = 2;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public Order getOrder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public OrderOrBuilder getOrderOrBuilder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasDate()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOrder()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getDate().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getOrder().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getDate());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getOrder());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getDate());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getOrder());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ReserveQueryResponse)) {
          return super.equals(obj);
        }
        ReserveQueryResponse other = (ReserveQueryResponse) obj;
  
        boolean result = true;
        result = result && (hasDate() == other.hasDate());
        if (hasDate()) {
          result = result && getDate()
              .equals(other.getDate());
        }
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasDate()) {
          hash = (37 * hash) + DATE_FIELD_NUMBER;
          hash = (53 * hash) + getDate().hashCode();
        }
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ReserveQueryResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveQueryResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveQueryResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveQueryResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveQueryResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ReserveQueryResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ReserveQueryResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveQueryResponse 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 ReserveQueryResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ReserveQueryResponse 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 ReserveQueryResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ReserveQueryResponse 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(ReserveQueryResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *设备预约查询回复 MessageType.RESERVE_QUERY_RESPONSE
       * </pre>
       *
       * Protobuf type {@code ReserveQueryResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ReserveQueryResponse)
          ReserveQueryResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ReserveQueryResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ReserveQueryResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ReserveQueryResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ReserveQueryResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDateFieldBuilder();
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (dateBuilder_ == null) {
            date_ = null;
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ReserveQueryResponse_descriptor;
        }
  
        public ReserveQueryResponse getDefaultInstanceForType() {
          return ReserveQueryResponse.getDefaultInstance();
        }
  
        public ReserveQueryResponse build() {
          ReserveQueryResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ReserveQueryResponse buildPartial() {
          ReserveQueryResponse result = new ReserveQueryResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (dateBuilder_ == null) {
            result.date_ = date_;
          } else {
            result.date_ = dateBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ReserveQueryResponse) {
            return mergeFrom((ReserveQueryResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ReserveQueryResponse other) {
          if (other == ReserveQueryResponse.getDefaultInstance()) return this;
          if (other.hasDate()) {
            mergeDate(other.getDate());
          }
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasDate()) {
            return false;
          }
          if (!hasOrder()) {
            return false;
          }
          if (!getDate().isInitialized()) {
            return false;
          }
          if (!getOrder().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ReserveQueryResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ReserveQueryResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private FullDate date_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder> dateBuilder_;
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public boolean hasDate() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public FullDate getDate() {
          if (dateBuilder_ == null) {
            return date_ == null ? FullDate.getDefaultInstance() : date_;
          } else {
            return dateBuilder_.getMessage();
          }
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public Builder setDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            date_ = value;
            onChanged();
          } else {
            dateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public Builder setDate(
            FullDate.Builder builderForValue) {
          if (dateBuilder_ == null) {
            date_ = builderForValue.build();
            onChanged();
          } else {
            dateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public Builder mergeDate(FullDate value) {
          if (dateBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                date_ != null &&
                date_ != FullDate.getDefaultInstance()) {
              date_ =
                FullDate.newBuilder(date_).mergeFrom(value).buildPartial();
            } else {
              date_ = value;
            }
            onChanged();
          } else {
            dateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public Builder clearDate() {
          if (dateBuilder_ == null) {
            date_ = null;
            onChanged();
          } else {
            dateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public FullDate.Builder getDateBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getDateFieldBuilder().getBuilder();
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        public FullDateOrBuilder getDateOrBuilder() {
          if (dateBuilder_ != null) {
            return dateBuilder_.getMessageOrBuilder();
          } else {
            return date_ == null ?
                FullDate.getDefaultInstance() : date_;
          }
        }
        /**
         * <code>required .FullDate date = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder>
            getDateFieldBuilder() {
          if (dateBuilder_ == null) {
            dateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                FullDate, FullDate.Builder, FullDateOrBuilder>(
                    getDate(),
                    getParentForChildren(),
                    isClean());
            date_ = null;
          }
          return dateBuilder_;
        }
  
        private Order order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder> orderBuilder_;
        /**
         * <code>required .Order order = 2;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? Order.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(
            Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder mergeOrder(Order value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                order_ != null &&
                order_ != Order.getDefaultInstance()) {
              order_ =
                Order.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order.Builder getOrderBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public OrderOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                Order.getDefaultInstance() : order_;
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Order, Order.Builder, OrderOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ReserveQueryResponse)
      }
  
      // @@protoc_insertion_point(class_scope:ReserveQueryResponse)
      private static final ReserveQueryResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ReserveQueryResponse();
      }
  
      public static ReserveQueryResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ReserveQueryResponse>
          PARSER = new com.google.protobuf.AbstractParser<ReserveQueryResponse>() {
        public ReserveQueryResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ReserveQueryResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ReserveQueryResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ReserveQueryResponse> getParserForType() {
        return PARSER;
      }
  
      public ReserveQueryResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface VerifyRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:VerifyRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required bool verify = 1;</code>
       */
      boolean hasVerify();
      /**
       * <code>required bool verify = 1;</code>
       */
      boolean getVerify();
  
      /**
       * <code>required .User user = 2;</code>
       */
      boolean hasUser();
      /**
       * <code>required .User user = 2;</code>
       */
      User getUser();
      /**
       * <code>required .User user = 2;</code>
       */
      UserOrBuilder getUserOrBuilder();
  
      /**
       * <code>required .Order order = 3;</code>
       */
      boolean hasOrder();
      /**
       * <code>required .Order order = 3;</code>
       */
      Order getOrder();
      /**
       * <code>required .Order order = 3;</code>
       */
      OrderOrBuilder getOrderOrBuilder();
  
      /**
       * <code>required string offlinePassword = 4;</code>
       */
      boolean hasOfflinePassword();
      /**
       * <code>required string offlinePassword = 4;</code>
       */
      String getOfflinePassword();
      /**
       * <code>required string offlinePassword = 4;</code>
       */
      com.google.protobuf.ByteString
          getOfflinePasswordBytes();
    }
    /**
     * <pre>
     *鉴权请求 MessageType.VERIFY_REQUEST
     * </pre>
     *
     * Protobuf type {@code VerifyRequest}
     */
    public  static final class VerifyRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:VerifyRequest)
        VerifyRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use VerifyRequest.newBuilder() to construct.
      private VerifyRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private VerifyRequest() {
        verify_ = false;
        offlinePassword_ = "";
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private VerifyRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                verify_ = input.readBool();
                break;
              }
              case 18: {
                User.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = user_.toBuilder();
                }
                user_ = input.readMessage(User.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(user_);
                  user_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              case 26: {
                Order.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(Order.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 34: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000008;
                offlinePassword_ = bs;
                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 DeviceMessage.internal_static_VerifyRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_VerifyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                VerifyRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int VERIFY_FIELD_NUMBER = 1;
      private boolean verify_;
      /**
       * <code>required bool verify = 1;</code>
       */
      public boolean hasVerify() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required bool verify = 1;</code>
       */
      public boolean getVerify() {
        return verify_;
      }
  
      public static final int USER_FIELD_NUMBER = 2;
      private User user_;
      /**
       * <code>required .User user = 2;</code>
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .User user = 2;</code>
       */
      public User getUser() {
        return user_ == null ? User.getDefaultInstance() : user_;
      }
      /**
       * <code>required .User user = 2;</code>
       */
      public UserOrBuilder getUserOrBuilder() {
        return user_ == null ? User.getDefaultInstance() : user_;
      }
  
      public static final int ORDER_FIELD_NUMBER = 3;
      private Order order_;
      /**
       * <code>required .Order order = 3;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .Order order = 3;</code>
       */
      public Order getOrder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
      /**
       * <code>required .Order order = 3;</code>
       */
      public OrderOrBuilder getOrderOrBuilder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
  
      public static final int OFFLINEPASSWORD_FIELD_NUMBER = 4;
      private volatile Object offlinePassword_;
      /**
       * <code>required string offlinePassword = 4;</code>
       */
      public boolean hasOfflinePassword() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required string offlinePassword = 4;</code>
       */
      public String getOfflinePassword() {
        Object ref = offlinePassword_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            offlinePassword_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string offlinePassword = 4;</code>
       */
      public com.google.protobuf.ByteString
          getOfflinePasswordBytes() {
        Object ref = offlinePassword_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          offlinePassword_ = 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;
  
        if (!hasVerify()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasUser()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOrder()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOfflinePassword()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getUser().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getOrder().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBool(1, verify_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getUser());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(3, getOrder());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 4, offlinePassword_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(1, verify_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getUser());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getOrder());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, offlinePassword_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof VerifyRequest)) {
          return super.equals(obj);
        }
        VerifyRequest other = (VerifyRequest) obj;
  
        boolean result = true;
        result = result && (hasVerify() == other.hasVerify());
        if (hasVerify()) {
          result = result && (getVerify()
              == other.getVerify());
        }
        result = result && (hasUser() == other.hasUser());
        if (hasUser()) {
          result = result && getUser()
              .equals(other.getUser());
        }
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && (hasOfflinePassword() == other.hasOfflinePassword());
        if (hasOfflinePassword()) {
          result = result && getOfflinePassword()
              .equals(other.getOfflinePassword());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasVerify()) {
          hash = (37 * hash) + VERIFY_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getVerify());
        }
        if (hasUser()) {
          hash = (37 * hash) + USER_FIELD_NUMBER;
          hash = (53 * hash) + getUser().hashCode();
        }
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        if (hasOfflinePassword()) {
          hash = (37 * hash) + OFFLINEPASSWORD_FIELD_NUMBER;
          hash = (53 * hash) + getOfflinePassword().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static VerifyRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static VerifyRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static VerifyRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static VerifyRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static VerifyRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static VerifyRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static VerifyRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static VerifyRequest 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 VerifyRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static VerifyRequest 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 VerifyRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static VerifyRequest 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(VerifyRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *鉴权请求 MessageType.VERIFY_REQUEST
       * </pre>
       *
       * Protobuf type {@code VerifyRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:VerifyRequest)
          VerifyRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_VerifyRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_VerifyRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  VerifyRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.VerifyRequest.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getUserFieldBuilder();
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          verify_ = false;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (userBuilder_ == null) {
            user_ = null;
          } else {
            userBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          offlinePassword_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_VerifyRequest_descriptor;
        }
  
        public VerifyRequest getDefaultInstanceForType() {
          return VerifyRequest.getDefaultInstance();
        }
  
        public VerifyRequest build() {
          VerifyRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public VerifyRequest buildPartial() {
          VerifyRequest result = new VerifyRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.verify_ = verify_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (userBuilder_ == null) {
            result.user_ = user_;
          } else {
            result.user_ = userBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.offlinePassword_ = offlinePassword_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof VerifyRequest) {
            return mergeFrom((VerifyRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(VerifyRequest other) {
          if (other == VerifyRequest.getDefaultInstance()) return this;
          if (other.hasVerify()) {
            setVerify(other.getVerify());
          }
          if (other.hasUser()) {
            mergeUser(other.getUser());
          }
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          if (other.hasOfflinePassword()) {
            bitField0_ |= 0x00000008;
            offlinePassword_ = other.offlinePassword_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasVerify()) {
            return false;
          }
          if (!hasUser()) {
            return false;
          }
          if (!hasOrder()) {
            return false;
          }
          if (!hasOfflinePassword()) {
            return false;
          }
          if (!getUser().isInitialized()) {
            return false;
          }
          if (!getOrder().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          VerifyRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (VerifyRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private boolean verify_ ;
        /**
         * <code>required bool verify = 1;</code>
         */
        public boolean hasVerify() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required bool verify = 1;</code>
         */
        public boolean getVerify() {
          return verify_;
        }
        /**
         * <code>required bool verify = 1;</code>
         */
        public Builder setVerify(boolean value) {
          bitField0_ |= 0x00000001;
          verify_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required bool verify = 1;</code>
         */
        public Builder clearVerify() {
          bitField0_ = (bitField0_ & ~0x00000001);
          verify_ = false;
          onChanged();
          return this;
        }
  
        private User user_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            User, User.Builder, UserOrBuilder> userBuilder_;
        /**
         * <code>required .User user = 2;</code>
         */
        public boolean hasUser() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .User user = 2;</code>
         */
        public User getUser() {
          if (userBuilder_ == null) {
            return user_ == null ? User.getDefaultInstance() : user_;
          } else {
            return userBuilder_.getMessage();
          }
        }
        /**
         * <code>required .User user = 2;</code>
         */
        public Builder setUser(User value) {
          if (userBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            user_ = value;
            onChanged();
          } else {
            userBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .User user = 2;</code>
         */
        public Builder setUser(
            User.Builder builderForValue) {
          if (userBuilder_ == null) {
            user_ = builderForValue.build();
            onChanged();
          } else {
            userBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .User user = 2;</code>
         */
        public Builder mergeUser(User value) {
          if (userBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                user_ != null &&
                user_ != User.getDefaultInstance()) {
              user_ =
                User.newBuilder(user_).mergeFrom(value).buildPartial();
            } else {
              user_ = value;
            }
            onChanged();
          } else {
            userBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .User user = 2;</code>
         */
        public Builder clearUser() {
          if (userBuilder_ == null) {
            user_ = null;
            onChanged();
          } else {
            userBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .User user = 2;</code>
         */
        public User.Builder getUserBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getUserFieldBuilder().getBuilder();
        }
        /**
         * <code>required .User user = 2;</code>
         */
        public UserOrBuilder getUserOrBuilder() {
          if (userBuilder_ != null) {
            return userBuilder_.getMessageOrBuilder();
          } else {
            return user_ == null ?
                User.getDefaultInstance() : user_;
          }
        }
        /**
         * <code>required .User user = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            User, User.Builder, UserOrBuilder>
            getUserFieldBuilder() {
          if (userBuilder_ == null) {
            userBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                User, User.Builder, UserOrBuilder>(
                    getUser(),
                    getParentForChildren(),
                    isClean());
            user_ = null;
          }
          return userBuilder_;
        }
  
        private Order order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder> orderBuilder_;
        /**
         * <code>required .Order order = 3;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required .Order order = 3;</code>
         */
        public Order getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? Order.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Order order = 3;</code>
         */
        public Builder setOrder(Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>required .Order order = 3;</code>
         */
        public Builder setOrder(
            Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>required .Order order = 3;</code>
         */
        public Builder mergeOrder(Order value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                order_ != null &&
                order_ != Order.getDefaultInstance()) {
              order_ =
                Order.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>required .Order order = 3;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        /**
         * <code>required .Order order = 3;</code>
         */
        public Order.Builder getOrderBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Order order = 3;</code>
         */
        public OrderOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                Order.getDefaultInstance() : order_;
          }
        }
        /**
         * <code>required .Order order = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Order, Order.Builder, OrderOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
  
        private Object offlinePassword_ = "";
        /**
         * <code>required string offlinePassword = 4;</code>
         */
        public boolean hasOfflinePassword() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>required string offlinePassword = 4;</code>
         */
        public String getOfflinePassword() {
          Object ref = offlinePassword_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              offlinePassword_ = s;
            }
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <code>required string offlinePassword = 4;</code>
         */
        public com.google.protobuf.ByteString
            getOfflinePasswordBytes() {
          Object ref = offlinePassword_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            offlinePassword_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string offlinePassword = 4;</code>
         */
        public Builder setOfflinePassword(
            String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          offlinePassword_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string offlinePassword = 4;</code>
         */
        public Builder clearOfflinePassword() {
          bitField0_ = (bitField0_ & ~0x00000008);
          offlinePassword_ = getDefaultInstance().getOfflinePassword();
          onChanged();
          return this;
        }
        /**
         * <code>required string offlinePassword = 4;</code>
         */
        public Builder setOfflinePasswordBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          offlinePassword_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:VerifyRequest)
      }
  
      // @@protoc_insertion_point(class_scope:VerifyRequest)
      private static final VerifyRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new VerifyRequest();
      }
  
      public static VerifyRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<VerifyRequest>
          PARSER = new com.google.protobuf.AbstractParser<VerifyRequest>() {
        public VerifyRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new VerifyRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<VerifyRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<VerifyRequest> getParserForType() {
        return PARSER;
      }
  
      public VerifyRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface VerifyResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:VerifyResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
    }
    /**
     * <pre>
     *鉴权回复 MessageType.VERIFY_RESPONSE
     * </pre>
     *
     * Protobuf type {@code VerifyResponse}
     */
    public  static final class VerifyResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:VerifyResponse)
        VerifyResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use VerifyResponse.newBuilder() to construct.
      private VerifyResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private VerifyResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private VerifyResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                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 DeviceMessage.internal_static_VerifyResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_VerifyResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                VerifyResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof VerifyResponse)) {
          return super.equals(obj);
        }
        VerifyResponse other = (VerifyResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static VerifyResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static VerifyResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static VerifyResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static VerifyResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static VerifyResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static VerifyResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static VerifyResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static VerifyResponse 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 VerifyResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static VerifyResponse 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 VerifyResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static VerifyResponse 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(VerifyResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *鉴权回复 MessageType.VERIFY_RESPONSE
       * </pre>
       *
       * Protobuf type {@code VerifyResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:VerifyResponse)
          VerifyResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_VerifyResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_VerifyResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  VerifyResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.VerifyResponse.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_VerifyResponse_descriptor;
        }
  
        public VerifyResponse getDefaultInstanceForType() {
          return VerifyResponse.getDefaultInstance();
        }
  
        public VerifyResponse build() {
          VerifyResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public VerifyResponse buildPartial() {
          VerifyResponse result = new VerifyResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof VerifyResponse) {
            return mergeFrom((VerifyResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(VerifyResponse other) {
          if (other == VerifyResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          VerifyResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (VerifyResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:VerifyResponse)
      }
  
      // @@protoc_insertion_point(class_scope:VerifyResponse)
      private static final VerifyResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new VerifyResponse();
      }
  
      public static VerifyResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<VerifyResponse>
          PARSER = new com.google.protobuf.AbstractParser<VerifyResponse>() {
        public VerifyResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new VerifyResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<VerifyResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<VerifyResponse> getParserForType() {
        return PARSER;
      }
  
      public VerifyResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface StartChargeRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:StartChargeRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *充电类型
       * </pre>
       *
       * <code>required .StartChargeRequest.ChargeType chargeType = 1;</code>
       */
      boolean hasChargeType();
      /**
       * <pre>
       *充电类型
       * </pre>
       *
       * <code>required .StartChargeRequest.ChargeType chargeType = 1;</code>
       */
      StartChargeRequest.ChargeType getChargeType();
  
      /**
       * <pre>
       *充电类型对应的限制数据,chargeType=ChargeType.FULL时此参数无效
       * </pre>
       *
       * <code>optional int32 chargeData = 2;</code>
       */
      boolean hasChargeData();
      /**
       * <pre>
       *充电类型对应的限制数据,chargeType=ChargeType.FULL时此参数无效
       * </pre>
       *
       * <code>optional int32 chargeData = 2;</code>
       */
      int getChargeData();
    }
    /**
     * <pre>
     *开始充电请求 MessageType.START_CHARGE_REQUEST
     * </pre>
     *
     * Protobuf type {@code StartChargeRequest}
     */
    public  static final class StartChargeRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:StartChargeRequest)
        StartChargeRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use StartChargeRequest.newBuilder() to construct.
      private StartChargeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private StartChargeRequest() {
        chargeType_ = 0;
        chargeData_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private StartChargeRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                ChargeType value = ChargeType.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  chargeType_ = rawValue;
                }
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                chargeData_ = 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 DeviceMessage.internal_static_StartChargeRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_StartChargeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                StartChargeRequest.class, Builder.class);
      }
  
      /**
       * Protobuf enum {@code StartChargeRequest.ChargeType}
       */
      public enum ChargeType
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         *指定定时充电,chargeData需要携带定时时间
         * </pre>
         *
         * <code>TIMING = 0;</code>
         */
        TIMING(0),
        /**
         * <pre>
         *指定充电电量,chargeData需要携带电量
         * </pre>
         *
         * <code>ELECTRIC = 1;</code>
         */
        ELECTRIC(1),
        /**
         * <pre>
         *指定充电时长,chargeData需要携带时长
         * </pre>
         *
         * <code>DURATION = 2;</code>
         */
        DURATION(2),
        /**
         * <pre>
         *指定充电金额,chargeData需要携带金额
         * </pre>
         *
         * <code>FEES = 3;</code>
         */
        FEES(3),
        /**
         * <pre>
         *自动充满
         * </pre>
         *
         * <code>FULL = 4;</code>
         */
        FULL(4),
        /**
         * <pre>
         *未知类型
         * </pre>
         *
         * <code>UNKNOWN = 5;</code>
         */
        UNKNOWN(5),
        ;
  
        /**
         * <pre>
         *指定定时充电,chargeData需要携带定时时间
         * </pre>
         *
         * <code>TIMING = 0;</code>
         */
        public static final int TIMING_VALUE = 0;
        /**
         * <pre>
         *指定充电电量,chargeData需要携带电量
         * </pre>
         *
         * <code>ELECTRIC = 1;</code>
         */
        public static final int ELECTRIC_VALUE = 1;
        /**
         * <pre>
         *指定充电时长,chargeData需要携带时长
         * </pre>
         *
         * <code>DURATION = 2;</code>
         */
        public static final int DURATION_VALUE = 2;
        /**
         * <pre>
         *指定充电金额,chargeData需要携带金额
         * </pre>
         *
         * <code>FEES = 3;</code>
         */
        public static final int FEES_VALUE = 3;
        /**
         * <pre>
         *自动充满
         * </pre>
         *
         * <code>FULL = 4;</code>
         */
        public static final int FULL_VALUE = 4;
        /**
         * <pre>
         *未知类型
         * </pre>
         *
         * <code>UNKNOWN = 5;</code>
         */
        public static final int UNKNOWN_VALUE = 5;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @Deprecated
        public static ChargeType valueOf(int value) {
          return forNumber(value);
        }
  
        public static ChargeType forNumber(int value) {
          switch (value) {
            case 0: return TIMING;
            case 1: return ELECTRIC;
            case 2: return DURATION;
            case 3: return FEES;
            case 4: return FULL;
            case 5: return UNKNOWN;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<ChargeType>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            ChargeType> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<ChargeType>() {
                public ChargeType findValueByNumber(int number) {
                  return ChargeType.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 StartChargeRequest.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final ChargeType[] VALUES = values();
  
        public static ChargeType valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private ChargeType(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:StartChargeRequest.ChargeType)
      }
  
      private int bitField0_;
      public static final int CHARGETYPE_FIELD_NUMBER = 1;
      private int chargeType_;
      /**
       * <pre>
       *充电类型
       * </pre>
       *
       * <code>required .StartChargeRequest.ChargeType chargeType = 1;</code>
       */
      public boolean hasChargeType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *充电类型
       * </pre>
       *
       * <code>required .StartChargeRequest.ChargeType chargeType = 1;</code>
       */
      public ChargeType getChargeType() {
        ChargeType result = ChargeType.valueOf(chargeType_);
        return result == null ? ChargeType.TIMING : result;
      }
  
      public static final int CHARGEDATA_FIELD_NUMBER = 2;
      private int chargeData_;
      /**
       * <pre>
       *充电类型对应的限制数据,chargeType=ChargeType.FULL时此参数无效
       * </pre>
       *
       * <code>optional int32 chargeData = 2;</code>
       */
      public boolean hasChargeData() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *充电类型对应的限制数据,chargeType=ChargeType.FULL时此参数无效
       * </pre>
       *
       * <code>optional int32 chargeData = 2;</code>
       */
      public int getChargeData() {
        return chargeData_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasChargeType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, chargeType_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, chargeData_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, chargeType_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, chargeData_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof StartChargeRequest)) {
          return super.equals(obj);
        }
        StartChargeRequest other = (StartChargeRequest) obj;
  
        boolean result = true;
        result = result && (hasChargeType() == other.hasChargeType());
        if (hasChargeType()) {
          result = result && chargeType_ == other.chargeType_;
        }
        result = result && (hasChargeData() == other.hasChargeData());
        if (hasChargeData()) {
          result = result && (getChargeData()
              == other.getChargeData());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasChargeType()) {
          hash = (37 * hash) + CHARGETYPE_FIELD_NUMBER;
          hash = (53 * hash) + chargeType_;
        }
        if (hasChargeData()) {
          hash = (37 * hash) + CHARGEDATA_FIELD_NUMBER;
          hash = (53 * hash) + getChargeData();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static StartChargeRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StartChargeRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StartChargeRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StartChargeRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StartChargeRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StartChargeRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StartChargeRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static StartChargeRequest 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 StartChargeRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static StartChargeRequest 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 StartChargeRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static StartChargeRequest 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(StartChargeRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *开始充电请求 MessageType.START_CHARGE_REQUEST
       * </pre>
       *
       * Protobuf type {@code StartChargeRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:StartChargeRequest)
          StartChargeRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_StartChargeRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_StartChargeRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  StartChargeRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.StartChargeRequest.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();
          chargeType_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          chargeData_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_StartChargeRequest_descriptor;
        }
  
        public StartChargeRequest getDefaultInstanceForType() {
          return StartChargeRequest.getDefaultInstance();
        }
  
        public StartChargeRequest build() {
          StartChargeRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public StartChargeRequest buildPartial() {
          StartChargeRequest result = new StartChargeRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.chargeType_ = chargeType_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.chargeData_ = chargeData_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof StartChargeRequest) {
            return mergeFrom((StartChargeRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(StartChargeRequest other) {
          if (other == StartChargeRequest.getDefaultInstance()) return this;
          if (other.hasChargeType()) {
            setChargeType(other.getChargeType());
          }
          if (other.hasChargeData()) {
            setChargeData(other.getChargeData());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasChargeType()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          StartChargeRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (StartChargeRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int chargeType_ = 0;
        /**
         * <pre>
         *充电类型
         * </pre>
         *
         * <code>required .StartChargeRequest.ChargeType chargeType = 1;</code>
         */
        public boolean hasChargeType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *充电类型
         * </pre>
         *
         * <code>required .StartChargeRequest.ChargeType chargeType = 1;</code>
         */
        public ChargeType getChargeType() {
          ChargeType result = ChargeType.valueOf(chargeType_);
          return result == null ? ChargeType.TIMING : result;
        }
        /**
         * <pre>
         *充电类型
         * </pre>
         *
         * <code>required .StartChargeRequest.ChargeType chargeType = 1;</code>
         */
        public Builder setChargeType(ChargeType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          chargeType_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *充电类型
         * </pre>
         *
         * <code>required .StartChargeRequest.ChargeType chargeType = 1;</code>
         */
        public Builder clearChargeType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          chargeType_ = 0;
          onChanged();
          return this;
        }
  
        private int chargeData_ ;
        /**
         * <pre>
         *充电类型对应的限制数据,chargeType=ChargeType.FULL时此参数无效
         * </pre>
         *
         * <code>optional int32 chargeData = 2;</code>
         */
        public boolean hasChargeData() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *充电类型对应的限制数据,chargeType=ChargeType.FULL时此参数无效
         * </pre>
         *
         * <code>optional int32 chargeData = 2;</code>
         */
        public int getChargeData() {
          return chargeData_;
        }
        /**
         * <pre>
         *充电类型对应的限制数据,chargeType=ChargeType.FULL时此参数无效
         * </pre>
         *
         * <code>optional int32 chargeData = 2;</code>
         */
        public Builder setChargeData(int value) {
          bitField0_ |= 0x00000002;
          chargeData_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *充电类型对应的限制数据,chargeType=ChargeType.FULL时此参数无效
         * </pre>
         *
         * <code>optional int32 chargeData = 2;</code>
         */
        public Builder clearChargeData() {
          bitField0_ = (bitField0_ & ~0x00000002);
          chargeData_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:StartChargeRequest)
      }
  
      // @@protoc_insertion_point(class_scope:StartChargeRequest)
      private static final StartChargeRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new StartChargeRequest();
      }
  
      public static StartChargeRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<StartChargeRequest>
          PARSER = new com.google.protobuf.AbstractParser<StartChargeRequest>() {
        public StartChargeRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new StartChargeRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<StartChargeRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<StartChargeRequest> getParserForType() {
        return PARSER;
      }
  
      public StartChargeRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface StartChargeResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:StartChargeResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
    }
    /**
     * <pre>
     *开始充电回复 MessageType.START_CHARGE_RESPONSE
     * </pre>
     *
     * Protobuf type {@code StartChargeResponse}
     */
    public  static final class StartChargeResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:StartChargeResponse)
        StartChargeResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use StartChargeResponse.newBuilder() to construct.
      private StartChargeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private StartChargeResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private StartChargeResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                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 DeviceMessage.internal_static_StartChargeResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_StartChargeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                StartChargeResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof StartChargeResponse)) {
          return super.equals(obj);
        }
        StartChargeResponse other = (StartChargeResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static StartChargeResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StartChargeResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StartChargeResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StartChargeResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StartChargeResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StartChargeResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StartChargeResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static StartChargeResponse 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 StartChargeResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static StartChargeResponse 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 StartChargeResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static StartChargeResponse 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(StartChargeResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *开始充电回复 MessageType.START_CHARGE_RESPONSE
       * </pre>
       *
       * Protobuf type {@code StartChargeResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:StartChargeResponse)
          StartChargeResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_StartChargeResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_StartChargeResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  StartChargeResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.StartChargeResponse.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_StartChargeResponse_descriptor;
        }
  
        public StartChargeResponse getDefaultInstanceForType() {
          return StartChargeResponse.getDefaultInstance();
        }
  
        public StartChargeResponse build() {
          StartChargeResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public StartChargeResponse buildPartial() {
          StartChargeResponse result = new StartChargeResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof StartChargeResponse) {
            return mergeFrom((StartChargeResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(StartChargeResponse other) {
          if (other == StartChargeResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          StartChargeResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (StartChargeResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:StartChargeResponse)
      }
  
      // @@protoc_insertion_point(class_scope:StartChargeResponse)
      private static final StartChargeResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new StartChargeResponse();
      }
  
      public static StartChargeResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<StartChargeResponse>
          PARSER = new com.google.protobuf.AbstractParser<StartChargeResponse>() {
        public StartChargeResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new StartChargeResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<StartChargeResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<StartChargeResponse> getParserForType() {
        return PARSER;
      }
  
      public StartChargeResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface StopChargeRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:StopChargeRequest)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     *结束充电请求 MessageType.STOP_CHARGE_REQUEST
     * </pre>
     *
     * Protobuf type {@code StopChargeRequest}
     */
    public  static final class StopChargeRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:StopChargeRequest)
        StopChargeRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use StopChargeRequest.newBuilder() to construct.
      private StopChargeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private StopChargeRequest() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private StopChargeRequest(
          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 (!parseUnknownField(
                    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 DeviceMessage.internal_static_StopChargeRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_StopChargeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                StopChargeRequest.class, 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;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof StopChargeRequest)) {
          return super.equals(obj);
        }
        StopChargeRequest other = (StopChargeRequest) obj;
  
        boolean result = true;
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @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 StopChargeRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StopChargeRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StopChargeRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StopChargeRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StopChargeRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StopChargeRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StopChargeRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static StopChargeRequest 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 StopChargeRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static StopChargeRequest 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 StopChargeRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static StopChargeRequest 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(StopChargeRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *结束充电请求 MessageType.STOP_CHARGE_REQUEST
       * </pre>
       *
       * Protobuf type {@code StopChargeRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:StopChargeRequest)
          StopChargeRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_StopChargeRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_StopChargeRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  StopChargeRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.StopChargeRequest.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 DeviceMessage.internal_static_StopChargeRequest_descriptor;
        }
  
        public StopChargeRequest getDefaultInstanceForType() {
          return StopChargeRequest.getDefaultInstance();
        }
  
        public StopChargeRequest build() {
          StopChargeRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public StopChargeRequest buildPartial() {
          StopChargeRequest result = new StopChargeRequest(this);
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof StopChargeRequest) {
            return mergeFrom((StopChargeRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(StopChargeRequest other) {
          if (other == StopChargeRequest.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 {
          StopChargeRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (StopChargeRequest) 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.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:StopChargeRequest)
      }
  
      // @@protoc_insertion_point(class_scope:StopChargeRequest)
      private static final StopChargeRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new StopChargeRequest();
      }
  
      public static StopChargeRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<StopChargeRequest>
          PARSER = new com.google.protobuf.AbstractParser<StopChargeRequest>() {
        public StopChargeRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new StopChargeRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<StopChargeRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<StopChargeRequest> getParserForType() {
        return PARSER;
      }
  
      public StopChargeRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface StopChargeResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:StopChargeResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
  
      /**
       * <code>optional .OrderRequest order = 2;</code>
       */
      boolean hasOrder();
      /**
       * <code>optional .OrderRequest order = 2;</code>
       */
      OrderRequest getOrder();
      /**
       * <code>optional .OrderRequest order = 2;</code>
       */
      OrderRequestOrBuilder getOrderOrBuilder();
    }
    /**
     * <pre>
     *结束充电回复 MessageType.STOP_CHARGE_RESPONSE
     * </pre>
     *
     * Protobuf type {@code StopChargeResponse}
     */
    public  static final class StopChargeResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:StopChargeResponse)
        StopChargeResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use StopChargeResponse.newBuilder() to construct.
      private StopChargeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private StopChargeResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private StopChargeResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                break;
              }
              case 18: {
                OrderRequest.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(OrderRequest.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_StopChargeResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_StopChargeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                StopChargeResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      public static final int ORDER_FIELD_NUMBER = 2;
      private OrderRequest order_;
      /**
       * <code>optional .OrderRequest order = 2;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .OrderRequest order = 2;</code>
       */
      public OrderRequest getOrder() {
        return order_ == null ? OrderRequest.getDefaultInstance() : order_;
      }
      /**
       * <code>optional .OrderRequest order = 2;</code>
       */
      public OrderRequestOrBuilder getOrderOrBuilder() {
        return order_ == null ? OrderRequest.getDefaultInstance() : order_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasOrder()) {
          if (!getOrder().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getOrder());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getOrder());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof StopChargeResponse)) {
          return super.equals(obj);
        }
        StopChargeResponse other = (StopChargeResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static StopChargeResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StopChargeResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StopChargeResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StopChargeResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StopChargeResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static StopChargeResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static StopChargeResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static StopChargeResponse 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 StopChargeResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static StopChargeResponse 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 StopChargeResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static StopChargeResponse 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(StopChargeResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *结束充电回复 MessageType.STOP_CHARGE_RESPONSE
       * </pre>
       *
       * Protobuf type {@code StopChargeResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:StopChargeResponse)
          StopChargeResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_StopChargeResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_StopChargeResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  StopChargeResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.StopChargeResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_StopChargeResponse_descriptor;
        }
  
        public StopChargeResponse getDefaultInstanceForType() {
          return StopChargeResponse.getDefaultInstance();
        }
  
        public StopChargeResponse build() {
          StopChargeResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public StopChargeResponse buildPartial() {
          StopChargeResponse result = new StopChargeResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof StopChargeResponse) {
            return mergeFrom((StopChargeResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(StopChargeResponse other) {
          if (other == StopChargeResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          if (hasOrder()) {
            if (!getOrder().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          StopChargeResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (StopChargeResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
  
        private OrderRequest order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            OrderRequest, OrderRequest.Builder, OrderRequestOrBuilder> orderBuilder_;
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        public OrderRequest getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? OrderRequest.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        public Builder setOrder(OrderRequest value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        public Builder setOrder(
            OrderRequest.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        public Builder mergeOrder(OrderRequest value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                order_ != null &&
                order_ != OrderRequest.getDefaultInstance()) {
              order_ =
                OrderRequest.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        public OrderRequest.Builder getOrderBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        public OrderRequestOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                OrderRequest.getDefaultInstance() : order_;
          }
        }
        /**
         * <code>optional .OrderRequest order = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            OrderRequest, OrderRequest.Builder, OrderRequestOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                OrderRequest, OrderRequest.Builder, OrderRequestOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:StopChargeResponse)
      }
  
      // @@protoc_insertion_point(class_scope:StopChargeResponse)
      private static final StopChargeResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new StopChargeResponse();
      }
  
      public static StopChargeResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<StopChargeResponse>
          PARSER = new com.google.protobuf.AbstractParser<StopChargeResponse>() {
        public StopChargeResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new StopChargeResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<StopChargeResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<StopChargeResponse> getParserForType() {
        return PARSER;
      }
  
      public StopChargeResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ChargeGunRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ChargeGunRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *充电枪连接状态
       * </pre>
       *
       * <code>required .ChargeGunRequest.GunStatus status = 1;</code>
       */
      boolean hasStatus();
      /**
       * <pre>
       *充电枪连接状态
       * </pre>
       *
       * <code>required .ChargeGunRequest.GunStatus status = 1;</code>
       */
      ChargeGunRequest.GunStatus getStatus();
    }
    /**
     * <pre>
     *充电枪状态请求 MessageType.CHARGE_GUN_REQUEST
     * </pre>
     *
     * Protobuf type {@code ChargeGunRequest}
     */
    public  static final class ChargeGunRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ChargeGunRequest)
        ChargeGunRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ChargeGunRequest.newBuilder() to construct.
      private ChargeGunRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ChargeGunRequest() {
        status_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ChargeGunRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                GunStatus value = GunStatus.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  status_ = rawValue;
                }
                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 DeviceMessage.internal_static_ChargeGunRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ChargeGunRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ChargeGunRequest.class, Builder.class);
      }
  
      /**
       * Protobuf enum {@code ChargeGunRequest.GunStatus}
       */
      public enum GunStatus
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         *未连接
         * </pre>
         *
         * <code>NOT_CONNECTED = 0;</code>
         */
        NOT_CONNECTED(0),
        /**
         * <pre>
         *已连接
         * </pre>
         *
         * <code>CONNECTED = 1;</code>
         */
        CONNECTED(1),
        /**
         * <pre>
         *可以充电
         * </pre>
         *
         * <code>CHARGEABLE = 2;</code>
         */
        CHARGEABLE(2),
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>FAULT = 3;</code>
         */
        FAULT(3),
        ;
  
        /**
         * <pre>
         *未连接
         * </pre>
         *
         * <code>NOT_CONNECTED = 0;</code>
         */
        public static final int NOT_CONNECTED_VALUE = 0;
        /**
         * <pre>
         *已连接
         * </pre>
         *
         * <code>CONNECTED = 1;</code>
         */
        public static final int CONNECTED_VALUE = 1;
        /**
         * <pre>
         *可以充电
         * </pre>
         *
         * <code>CHARGEABLE = 2;</code>
         */
        public static final int CHARGEABLE_VALUE = 2;
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>FAULT = 3;</code>
         */
        public static final int FAULT_VALUE = 3;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @Deprecated
        public static GunStatus valueOf(int value) {
          return forNumber(value);
        }
  
        public static GunStatus forNumber(int value) {
          switch (value) {
            case 0: return NOT_CONNECTED;
            case 1: return CONNECTED;
            case 2: return CHARGEABLE;
            case 3: return FAULT;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<GunStatus>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            GunStatus> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<GunStatus>() {
                public GunStatus findValueByNumber(int number) {
                  return GunStatus.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 ChargeGunRequest.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final GunStatus[] VALUES = values();
  
        public static GunStatus valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private GunStatus(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:ChargeGunRequest.GunStatus)
      }
  
      private int bitField0_;
      public static final int STATUS_FIELD_NUMBER = 1;
      private int status_;
      /**
       * <pre>
       *充电枪连接状态
       * </pre>
       *
       * <code>required .ChargeGunRequest.GunStatus status = 1;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *充电枪连接状态
       * </pre>
       *
       * <code>required .ChargeGunRequest.GunStatus status = 1;</code>
       */
      public GunStatus getStatus() {
        GunStatus result = GunStatus.valueOf(status_);
        return result == null ? GunStatus.NOT_CONNECTED : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatus()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, status_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, status_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ChargeGunRequest)) {
          return super.equals(obj);
        }
        ChargeGunRequest other = (ChargeGunRequest) obj;
  
        boolean result = true;
        result = result && (hasStatus() == other.hasStatus());
        if (hasStatus()) {
          result = result && status_ == other.status_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatus()) {
          hash = (37 * hash) + STATUS_FIELD_NUMBER;
          hash = (53 * hash) + status_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ChargeGunRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ChargeGunRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ChargeGunRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ChargeGunRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ChargeGunRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ChargeGunRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ChargeGunRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ChargeGunRequest 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 ChargeGunRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ChargeGunRequest 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 ChargeGunRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ChargeGunRequest 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(ChargeGunRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *充电枪状态请求 MessageType.CHARGE_GUN_REQUEST
       * </pre>
       *
       * Protobuf type {@code ChargeGunRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ChargeGunRequest)
          ChargeGunRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ChargeGunRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ChargeGunRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ChargeGunRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ChargeGunRequest.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();
          status_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ChargeGunRequest_descriptor;
        }
  
        public ChargeGunRequest getDefaultInstanceForType() {
          return ChargeGunRequest.getDefaultInstance();
        }
  
        public ChargeGunRequest build() {
          ChargeGunRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ChargeGunRequest buildPartial() {
          ChargeGunRequest result = new ChargeGunRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.status_ = status_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ChargeGunRequest) {
            return mergeFrom((ChargeGunRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ChargeGunRequest other) {
          if (other == ChargeGunRequest.getDefaultInstance()) return this;
          if (other.hasStatus()) {
            setStatus(other.getStatus());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatus()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ChargeGunRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ChargeGunRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int status_ = 0;
        /**
         * <pre>
         *充电枪连接状态
         * </pre>
         *
         * <code>required .ChargeGunRequest.GunStatus status = 1;</code>
         */
        public boolean hasStatus() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *充电枪连接状态
         * </pre>
         *
         * <code>required .ChargeGunRequest.GunStatus status = 1;</code>
         */
        public GunStatus getStatus() {
          GunStatus result = GunStatus.valueOf(status_);
          return result == null ? GunStatus.NOT_CONNECTED : result;
        }
        /**
         * <pre>
         *充电枪连接状态
         * </pre>
         *
         * <code>required .ChargeGunRequest.GunStatus status = 1;</code>
         */
        public Builder setStatus(GunStatus value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          status_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *充电枪连接状态
         * </pre>
         *
         * <code>required .ChargeGunRequest.GunStatus status = 1;</code>
         */
        public Builder clearStatus() {
          bitField0_ = (bitField0_ & ~0x00000001);
          status_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ChargeGunRequest)
      }
  
      // @@protoc_insertion_point(class_scope:ChargeGunRequest)
      private static final ChargeGunRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ChargeGunRequest();
      }
  
      public static ChargeGunRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ChargeGunRequest>
          PARSER = new com.google.protobuf.AbstractParser<ChargeGunRequest>() {
        public ChargeGunRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ChargeGunRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ChargeGunRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ChargeGunRequest> getParserForType() {
        return PARSER;
      }
  
      public ChargeGunRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ChargeGunResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:ChargeGunResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
    }
    /**
     * <pre>
     *充电枪状态回复 MessageType.CHARGE_GUN_RESPONSE
     * </pre>
     *
     * Protobuf type {@code ChargeGunResponse}
     */
    public  static final class ChargeGunResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:ChargeGunResponse)
        ChargeGunResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ChargeGunResponse.newBuilder() to construct.
      private ChargeGunResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ChargeGunResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ChargeGunResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                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 DeviceMessage.internal_static_ChargeGunResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_ChargeGunResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ChargeGunResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ChargeGunResponse)) {
          return super.equals(obj);
        }
        ChargeGunResponse other = (ChargeGunResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static ChargeGunResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ChargeGunResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ChargeGunResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ChargeGunResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ChargeGunResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ChargeGunResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ChargeGunResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ChargeGunResponse 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 ChargeGunResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static ChargeGunResponse 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 ChargeGunResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ChargeGunResponse 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(ChargeGunResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *充电枪状态回复 MessageType.CHARGE_GUN_RESPONSE
       * </pre>
       *
       * Protobuf type {@code ChargeGunResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:ChargeGunResponse)
          ChargeGunResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_ChargeGunResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_ChargeGunResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ChargeGunResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.ChargeGunResponse.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_ChargeGunResponse_descriptor;
        }
  
        public ChargeGunResponse getDefaultInstanceForType() {
          return ChargeGunResponse.getDefaultInstance();
        }
  
        public ChargeGunResponse build() {
          ChargeGunResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public ChargeGunResponse buildPartial() {
          ChargeGunResponse result = new ChargeGunResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ChargeGunResponse) {
            return mergeFrom((ChargeGunResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(ChargeGunResponse other) {
          if (other == ChargeGunResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          ChargeGunResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (ChargeGunResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:ChargeGunResponse)
      }
  
      // @@protoc_insertion_point(class_scope:ChargeGunResponse)
      private static final ChargeGunResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ChargeGunResponse();
      }
  
      public static ChargeGunResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<ChargeGunResponse>
          PARSER = new com.google.protobuf.AbstractParser<ChargeGunResponse>() {
        public ChargeGunResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ChargeGunResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ChargeGunResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<ChargeGunResponse> getParserForType() {
        return PARSER;
      }
  
      public ChargeGunResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface OrderRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:OrderRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       *开始时间
       * </pre>
       *
       * <code>required .FullDate startAt = 1;</code>
       */
      boolean hasStartAt();
      /**
       * <pre>
       *开始时间
       * </pre>
       *
       * <code>required .FullDate startAt = 1;</code>
       */
      FullDate getStartAt();
      /**
       * <pre>
       *开始时间
       * </pre>
       *
       * <code>required .FullDate startAt = 1;</code>
       */
      FullDateOrBuilder getStartAtOrBuilder();
  
      /**
       * <pre>
       *结束时间
       * </pre>
       *
       * <code>required .FullDate stopAt = 2;</code>
       */
      boolean hasStopAt();
      /**
       * <pre>
       *结束时间
       * </pre>
       *
       * <code>required .FullDate stopAt = 2;</code>
       */
      FullDate getStopAt();
      /**
       * <pre>
       *结束时间
       * </pre>
       *
       * <code>required .FullDate stopAt = 2;</code>
       */
      FullDateOrBuilder getStopAtOrBuilder();
  
      /**
       * <pre>
       *开始时电表电量
       * </pre>
       *
       * <code>required float startAmmeter = 3;</code>
       */
      boolean hasStartAmmeter();
      /**
       * <pre>
       *开始时电表电量
       * </pre>
       *
       * <code>required float startAmmeter = 3;</code>
       */
      float getStartAmmeter();
  
      /**
       * <pre>
       *结束是电表电量
       * </pre>
       *
       * <code>required float stopAmmeter = 4;</code>
       */
      boolean hasStopAmmeter();
      /**
       * <pre>
       *结束是电表电量
       * </pre>
       *
       * <code>required float stopAmmeter = 4;</code>
       */
      float getStopAmmeter();
  
      /**
       * <pre>
       *开始时汽车电量百分比
       * </pre>
       *
       * <code>required float startSOC = 5;</code>
       */
      boolean hasStartSOC();
      /**
       * <pre>
       *开始时汽车电量百分比
       * </pre>
       *
       * <code>required float startSOC = 5;</code>
       */
      float getStartSOC();
  
      /**
       * <pre>
       *结束时汽车电量百分比
       * </pre>
       *
       * <code>required float stopSOC = 6;</code>
       */
      boolean hasStopSOC();
      /**
       * <pre>
       *结束时汽车电量百分比
       * </pre>
       *
       * <code>required float stopSOC = 6;</code>
       */
      float getStopSOC();
  
      /**
       * <pre>
       *充电时长,单位:秒
       * </pre>
       *
       * <code>required uint32 duration = 7;</code>
       */
      boolean hasDuration();
      /**
       * <pre>
       *充电时长,单位:秒
       * </pre>
       *
       * <code>required uint32 duration = 7;</code>
       */
      int getDuration();
  
      /**
       * <pre>
       *充电电量
       * </pre>
       *
       * <code>required float electricQuantity = 8;</code>
       */
      boolean hasElectricQuantity();
      /**
       * <pre>
       *充电电量
       * </pre>
       *
       * <code>required float electricQuantity = 8;</code>
       */
      float getElectricQuantity();
  
      /**
       * <pre>
       *用户
       * </pre>
       *
       * <code>required .User user = 9;</code>
       */
      boolean hasUser();
      /**
       * <pre>
       *用户
       * </pre>
       *
       * <code>required .User user = 9;</code>
       */
      User getUser();
      /**
       * <pre>
       *用户
       * </pre>
       *
       * <code>required .User user = 9;</code>
       */
      UserOrBuilder getUserOrBuilder();
  
      /**
       * <pre>
       *订单信息
       * </pre>
       *
       * <code>required .Order order = 10;</code>
       */
      boolean hasOrder();
      /**
       * <pre>
       *订单信息
       * </pre>
       *
       * <code>required .Order order = 10;</code>
       */
      Order getOrder();
      /**
       * <pre>
       *订单信息
       * </pre>
       *
       * <code>required .Order order = 10;</code>
       */
      OrderOrBuilder getOrderOrBuilder();
  
      /**
       * <pre>
       *停止原因
       * </pre>
       *
       * <code>required .OrderRequest.StopCause stopCause = 11;</code>
       */
      boolean hasStopCause();
      /**
       * <pre>
       *停止原因
       * </pre>
       *
       * <code>required .OrderRequest.StopCause stopCause = 11;</code>
       */
      OrderRequest.StopCause getStopCause();
    }
    /**
     * <pre>
     *充电记录请求 MessageType.REPORT_ORDER_REQUEST
     * </pre>
     *
     * Protobuf type {@code OrderRequest}
     */
    public  static final class OrderRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:OrderRequest)
        OrderRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use OrderRequest.newBuilder() to construct.
      private OrderRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private OrderRequest() {
        startAmmeter_ = 0F;
        stopAmmeter_ = 0F;
        startSOC_ = 0F;
        stopSOC_ = 0F;
        duration_ = 0;
        electricQuantity_ = 0F;
        stopCause_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private OrderRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                FullDate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  subBuilder = startAt_.toBuilder();
                }
                startAt_ = input.readMessage(FullDate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(startAt_);
                  startAt_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 18: {
                FullDate.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = stopAt_.toBuilder();
                }
                stopAt_ = input.readMessage(FullDate.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(stopAt_);
                  stopAt_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              case 29: {
                bitField0_ |= 0x00000004;
                startAmmeter_ = input.readFloat();
                break;
              }
              case 37: {
                bitField0_ |= 0x00000008;
                stopAmmeter_ = input.readFloat();
                break;
              }
              case 45: {
                bitField0_ |= 0x00000010;
                startSOC_ = input.readFloat();
                break;
              }
              case 53: {
                bitField0_ |= 0x00000020;
                stopSOC_ = input.readFloat();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000040;
                duration_ = input.readUInt32();
                break;
              }
              case 69: {
                bitField0_ |= 0x00000080;
                electricQuantity_ = input.readFloat();
                break;
              }
              case 74: {
                User.Builder subBuilder = null;
                if (((bitField0_ & 0x00000100) == 0x00000100)) {
                  subBuilder = user_.toBuilder();
                }
                user_ = input.readMessage(User.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(user_);
                  user_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000100;
                break;
              }
              case 82: {
                Order.Builder subBuilder = null;
                if (((bitField0_ & 0x00000200) == 0x00000200)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(Order.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000200;
                break;
              }
              case 88: {
                int rawValue = input.readEnum();
                StopCause value = StopCause.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(11, rawValue);
                } else {
                  bitField0_ |= 0x00000400;
                  stopCause_ = rawValue;
                }
                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 DeviceMessage.internal_static_OrderRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_OrderRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                OrderRequest.class, Builder.class);
      }
  
      /**
       * Protobuf enum {@code OrderRequest.StopCause}
       */
      public enum StopCause
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         *余额不足
         * </pre>
         *
         * <code>BALANCE = 0;</code>
         */
        BALANCE(0),
        /**
         * <pre>
         *定电量到
         * </pre>
         *
         * <code>ELECTRIC = 1;</code>
         */
        ELECTRIC(1),
        /**
         * <pre>
         *定费用到
         * </pre>
         *
         * <code>FEES = 2;</code>
         */
        FEES(2),
        /**
         * <pre>
         *到时
         * </pre>
         *
         * <code>TIMING = 3;</code>
         */
        TIMING(3),
        /**
         * <pre>
         *车辆主动停止
         * </pre>
         *
         * <code>CAR_STOP = 4;</code>
         */
        CAR_STOP(4),
        /**
         * <pre>
         *用户主动停止
         * </pre>
         *
         * <code>USER_STOP = 5;</code>
         */
        USER_STOP(5),
        /**
         * <pre>
         *输出失败
         * </pre>
         *
         * <code>OUTPUT_FAIL = 6;</code>
         */
        OUTPUT_FAIL(6),
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>FAULT = 7;</code>
         */
        FAULT(7),
        /**
         * <pre>
         *未结账
         * </pre>
         *
         * <code>NONPAYMENT = 8;</code>
         */
        NONPAYMENT(8),
        /**
         * <pre>
         *异常
         * </pre>
         *
         * <code>EXCEPTION = 9;</code>
         */
        EXCEPTION(9),
        /**
         * <pre>
         *意外断电
         * </pre>
         *
         * <code>ORDER_REQUEST__STOP_CAUSE__OUTAGE = 10;</code>
         */
        ORDER_REQUEST__STOP_CAUSE__OUTAGE(10),
        ;
  
        /**
         * <pre>
         *余额不足
         * </pre>
         *
         * <code>BALANCE = 0;</code>
         */
        public static final int BALANCE_VALUE = 0;
        /**
         * <pre>
         *定电量到
         * </pre>
         *
         * <code>ELECTRIC = 1;</code>
         */
        public static final int ELECTRIC_VALUE = 1;
        /**
         * <pre>
         *定费用到
         * </pre>
         *
         * <code>FEES = 2;</code>
         */
        public static final int FEES_VALUE = 2;
        /**
         * <pre>
         *到时
         * </pre>
         *
         * <code>TIMING = 3;</code>
         */
        public static final int TIMING_VALUE = 3;
        /**
         * <pre>
         *车辆主动停止
         * </pre>
         *
         * <code>CAR_STOP = 4;</code>
         */
        public static final int CAR_STOP_VALUE = 4;
        /**
         * <pre>
         *用户主动停止
         * </pre>
         *
         * <code>USER_STOP = 5;</code>
         */
        public static final int USER_STOP_VALUE = 5;
        /**
         * <pre>
         *输出失败
         * </pre>
         *
         * <code>OUTPUT_FAIL = 6;</code>
         */
        public static final int OUTPUT_FAIL_VALUE = 6;
        /**
         * <pre>
         *故障
         * </pre>
         *
         * <code>FAULT = 7;</code>
         */
        public static final int FAULT_VALUE = 7;
        /**
         * <pre>
         *未结账
         * </pre>
         *
         * <code>NONPAYMENT = 8;</code>
         */
        public static final int NONPAYMENT_VALUE = 8;
        /**
         * <pre>
         *异常
         * </pre>
         *
         * <code>EXCEPTION = 9;</code>
         */
        public static final int EXCEPTION_VALUE = 9;
        /**
         * <pre>
         *意外断电
         * </pre>
         *
         * <code>ORDER_REQUEST__STOP_CAUSE__OUTAGE = 10;</code>
         */
        public static final int ORDER_REQUEST__STOP_CAUSE__OUTAGE_VALUE = 10;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @Deprecated
        public static StopCause valueOf(int value) {
          return forNumber(value);
        }
  
        public static StopCause forNumber(int value) {
          switch (value) {
            case 0: return BALANCE;
            case 1: return ELECTRIC;
            case 2: return FEES;
            case 3: return TIMING;
            case 4: return CAR_STOP;
            case 5: return USER_STOP;
            case 6: return OUTPUT_FAIL;
            case 7: return FAULT;
            case 8: return NONPAYMENT;
            case 9: return EXCEPTION;
            case 10: return ORDER_REQUEST__STOP_CAUSE__OUTAGE;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<StopCause>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            StopCause> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<StopCause>() {
                public StopCause findValueByNumber(int number) {
                  return StopCause.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 OrderRequest.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final StopCause[] VALUES = values();
  
        public static StopCause valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private StopCause(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:OrderRequest.StopCause)
      }
  
      private int bitField0_;
      public static final int STARTAT_FIELD_NUMBER = 1;
      private FullDate startAt_;
      /**
       * <pre>
       *开始时间
       * </pre>
       *
       * <code>required .FullDate startAt = 1;</code>
       */
      public boolean hasStartAt() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *开始时间
       * </pre>
       *
       * <code>required .FullDate startAt = 1;</code>
       */
      public FullDate getStartAt() {
        return startAt_ == null ? FullDate.getDefaultInstance() : startAt_;
      }
      /**
       * <pre>
       *开始时间
       * </pre>
       *
       * <code>required .FullDate startAt = 1;</code>
       */
      public FullDateOrBuilder getStartAtOrBuilder() {
        return startAt_ == null ? FullDate.getDefaultInstance() : startAt_;
      }
  
      public static final int STOPAT_FIELD_NUMBER = 2;
      private FullDate stopAt_;
      /**
       * <pre>
       *结束时间
       * </pre>
       *
       * <code>required .FullDate stopAt = 2;</code>
       */
      public boolean hasStopAt() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *结束时间
       * </pre>
       *
       * <code>required .FullDate stopAt = 2;</code>
       */
      public FullDate getStopAt() {
        return stopAt_ == null ? FullDate.getDefaultInstance() : stopAt_;
      }
      /**
       * <pre>
       *结束时间
       * </pre>
       *
       * <code>required .FullDate stopAt = 2;</code>
       */
      public FullDateOrBuilder getStopAtOrBuilder() {
        return stopAt_ == null ? FullDate.getDefaultInstance() : stopAt_;
      }
  
      public static final int STARTAMMETER_FIELD_NUMBER = 3;
      private float startAmmeter_;
      /**
       * <pre>
       *开始时电表电量
       * </pre>
       *
       * <code>required float startAmmeter = 3;</code>
       */
      public boolean hasStartAmmeter() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *开始时电表电量
       * </pre>
       *
       * <code>required float startAmmeter = 3;</code>
       */
      public float getStartAmmeter() {
        return startAmmeter_;
      }
  
      public static final int STOPAMMETER_FIELD_NUMBER = 4;
      private float stopAmmeter_;
      /**
       * <pre>
       *结束是电表电量
       * </pre>
       *
       * <code>required float stopAmmeter = 4;</code>
       */
      public boolean hasStopAmmeter() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       *结束是电表电量
       * </pre>
       *
       * <code>required float stopAmmeter = 4;</code>
       */
      public float getStopAmmeter() {
        return stopAmmeter_;
      }
  
      public static final int STARTSOC_FIELD_NUMBER = 5;
      private float startSOC_;
      /**
       * <pre>
       *开始时汽车电量百分比
       * </pre>
       *
       * <code>required float startSOC = 5;</code>
       */
      public boolean hasStartSOC() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <pre>
       *开始时汽车电量百分比
       * </pre>
       *
       * <code>required float startSOC = 5;</code>
       */
      public float getStartSOC() {
        return startSOC_;
      }
  
      public static final int STOPSOC_FIELD_NUMBER = 6;
      private float stopSOC_;
      /**
       * <pre>
       *结束时汽车电量百分比
       * </pre>
       *
       * <code>required float stopSOC = 6;</code>
       */
      public boolean hasStopSOC() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <pre>
       *结束时汽车电量百分比
       * </pre>
       *
       * <code>required float stopSOC = 6;</code>
       */
      public float getStopSOC() {
        return stopSOC_;
      }
  
      public static final int DURATION_FIELD_NUMBER = 7;
      private int duration_;
      /**
       * <pre>
       *充电时长,单位:秒
       * </pre>
       *
       * <code>required uint32 duration = 7;</code>
       */
      public boolean hasDuration() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <pre>
       *充电时长,单位:秒
       * </pre>
       *
       * <code>required uint32 duration = 7;</code>
       */
      public int getDuration() {
        return duration_;
      }
  
      public static final int ELECTRICQUANTITY_FIELD_NUMBER = 8;
      private float electricQuantity_;
      /**
       * <pre>
       *充电电量
       * </pre>
       *
       * <code>required float electricQuantity = 8;</code>
       */
      public boolean hasElectricQuantity() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <pre>
       *充电电量
       * </pre>
       *
       * <code>required float electricQuantity = 8;</code>
       */
      public float getElectricQuantity() {
        return electricQuantity_;
      }
  
      public static final int USER_FIELD_NUMBER = 9;
      private User user_;
      /**
       * <pre>
       *用户
       * </pre>
       *
       * <code>required .User user = 9;</code>
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <pre>
       *用户
       * </pre>
       *
       * <code>required .User user = 9;</code>
       */
      public User getUser() {
        return user_ == null ? User.getDefaultInstance() : user_;
      }
      /**
       * <pre>
       *用户
       * </pre>
       *
       * <code>required .User user = 9;</code>
       */
      public UserOrBuilder getUserOrBuilder() {
        return user_ == null ? User.getDefaultInstance() : user_;
      }
  
      public static final int ORDER_FIELD_NUMBER = 10;
      private Order order_;
      /**
       * <pre>
       *订单信息
       * </pre>
       *
       * <code>required .Order order = 10;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <pre>
       *订单信息
       * </pre>
       *
       * <code>required .Order order = 10;</code>
       */
      public Order getOrder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
      /**
       * <pre>
       *订单信息
       * </pre>
       *
       * <code>required .Order order = 10;</code>
       */
      public OrderOrBuilder getOrderOrBuilder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
  
      public static final int STOPCAUSE_FIELD_NUMBER = 11;
      private int stopCause_;
      /**
       * <pre>
       *停止原因
       * </pre>
       *
       * <code>required .OrderRequest.StopCause stopCause = 11;</code>
       */
      public boolean hasStopCause() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <pre>
       *停止原因
       * </pre>
       *
       * <code>required .OrderRequest.StopCause stopCause = 11;</code>
       */
      public StopCause getStopCause() {
        StopCause result = StopCause.valueOf(stopCause_);
        return result == null ? StopCause.BALANCE : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStartAt()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStopAt()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStartAmmeter()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStopAmmeter()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStartSOC()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStopSOC()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasDuration()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasElectricQuantity()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasUser()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOrder()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStopCause()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getStartAt().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getStopAt().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getUser().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getOrder().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeMessage(1, getStartAt());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getStopAt());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeFloat(3, startAmmeter_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeFloat(4, stopAmmeter_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeFloat(5, startSOC_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeFloat(6, stopSOC_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeUInt32(7, duration_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeFloat(8, electricQuantity_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeMessage(9, getUser());
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeMessage(10, getOrder());
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeEnum(11, stopCause_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getStartAt());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getStopAt());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(3, startAmmeter_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(4, stopAmmeter_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(5, startSOC_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(6, stopSOC_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, duration_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(8, electricQuantity_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, getUser());
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, getOrder());
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(11, stopCause_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof OrderRequest)) {
          return super.equals(obj);
        }
        OrderRequest other = (OrderRequest) obj;
  
        boolean result = true;
        result = result && (hasStartAt() == other.hasStartAt());
        if (hasStartAt()) {
          result = result && getStartAt()
              .equals(other.getStartAt());
        }
        result = result && (hasStopAt() == other.hasStopAt());
        if (hasStopAt()) {
          result = result && getStopAt()
              .equals(other.getStopAt());
        }
        result = result && (hasStartAmmeter() == other.hasStartAmmeter());
        if (hasStartAmmeter()) {
          result = result && (
              Float.floatToIntBits(getStartAmmeter())
              == Float.floatToIntBits(
                  other.getStartAmmeter()));
        }
        result = result && (hasStopAmmeter() == other.hasStopAmmeter());
        if (hasStopAmmeter()) {
          result = result && (
              Float.floatToIntBits(getStopAmmeter())
              == Float.floatToIntBits(
                  other.getStopAmmeter()));
        }
        result = result && (hasStartSOC() == other.hasStartSOC());
        if (hasStartSOC()) {
          result = result && (
              Float.floatToIntBits(getStartSOC())
              == Float.floatToIntBits(
                  other.getStartSOC()));
        }
        result = result && (hasStopSOC() == other.hasStopSOC());
        if (hasStopSOC()) {
          result = result && (
              Float.floatToIntBits(getStopSOC())
              == Float.floatToIntBits(
                  other.getStopSOC()));
        }
        result = result && (hasDuration() == other.hasDuration());
        if (hasDuration()) {
          result = result && (getDuration()
              == other.getDuration());
        }
        result = result && (hasElectricQuantity() == other.hasElectricQuantity());
        if (hasElectricQuantity()) {
          result = result && (
              Float.floatToIntBits(getElectricQuantity())
              == Float.floatToIntBits(
                  other.getElectricQuantity()));
        }
        result = result && (hasUser() == other.hasUser());
        if (hasUser()) {
          result = result && getUser()
              .equals(other.getUser());
        }
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && (hasStopCause() == other.hasStopCause());
        if (hasStopCause()) {
          result = result && stopCause_ == other.stopCause_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStartAt()) {
          hash = (37 * hash) + STARTAT_FIELD_NUMBER;
          hash = (53 * hash) + getStartAt().hashCode();
        }
        if (hasStopAt()) {
          hash = (37 * hash) + STOPAT_FIELD_NUMBER;
          hash = (53 * hash) + getStopAt().hashCode();
        }
        if (hasStartAmmeter()) {
          hash = (37 * hash) + STARTAMMETER_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getStartAmmeter());
        }
        if (hasStopAmmeter()) {
          hash = (37 * hash) + STOPAMMETER_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getStopAmmeter());
        }
        if (hasStartSOC()) {
          hash = (37 * hash) + STARTSOC_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getStartSOC());
        }
        if (hasStopSOC()) {
          hash = (37 * hash) + STOPSOC_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getStopSOC());
        }
        if (hasDuration()) {
          hash = (37 * hash) + DURATION_FIELD_NUMBER;
          hash = (53 * hash) + getDuration();
        }
        if (hasElectricQuantity()) {
          hash = (37 * hash) + ELECTRICQUANTITY_FIELD_NUMBER;
          hash = (53 * hash) + Float.floatToIntBits(
              getElectricQuantity());
        }
        if (hasUser()) {
          hash = (37 * hash) + USER_FIELD_NUMBER;
          hash = (53 * hash) + getUser().hashCode();
        }
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        if (hasStopCause()) {
          hash = (37 * hash) + STOPCAUSE_FIELD_NUMBER;
          hash = (53 * hash) + stopCause_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static OrderRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static OrderRequest 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 OrderRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static OrderRequest 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 OrderRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static OrderRequest 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(OrderRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *充电记录请求 MessageType.REPORT_ORDER_REQUEST
       * </pre>
       *
       * Protobuf type {@code OrderRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:OrderRequest)
          OrderRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_OrderRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_OrderRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  OrderRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.OrderRequest.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getStartAtFieldBuilder();
            getStopAtFieldBuilder();
            getUserFieldBuilder();
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (startAtBuilder_ == null) {
            startAt_ = null;
          } else {
            startAtBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (stopAtBuilder_ == null) {
            stopAt_ = null;
          } else {
            stopAtBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          startAmmeter_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000004);
          stopAmmeter_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000008);
          startSOC_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000010);
          stopSOC_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000020);
          duration_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          electricQuantity_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000080);
          if (userBuilder_ == null) {
            user_ = null;
          } else {
            userBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000200);
          stopCause_ = 0;
          bitField0_ = (bitField0_ & ~0x00000400);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_OrderRequest_descriptor;
        }
  
        public OrderRequest getDefaultInstanceForType() {
          return OrderRequest.getDefaultInstance();
        }
  
        public OrderRequest build() {
          OrderRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public OrderRequest buildPartial() {
          OrderRequest result = new OrderRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          if (startAtBuilder_ == null) {
            result.startAt_ = startAt_;
          } else {
            result.startAt_ = startAtBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (stopAtBuilder_ == null) {
            result.stopAt_ = stopAt_;
          } else {
            result.stopAt_ = stopAtBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.startAmmeter_ = startAmmeter_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.stopAmmeter_ = stopAmmeter_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.startSOC_ = startSOC_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.stopSOC_ = stopSOC_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.duration_ = duration_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          result.electricQuantity_ = electricQuantity_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          if (userBuilder_ == null) {
            result.user_ = user_;
          } else {
            result.user_ = userBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000200;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000400;
          }
          result.stopCause_ = stopCause_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof OrderRequest) {
            return mergeFrom((OrderRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(OrderRequest other) {
          if (other == OrderRequest.getDefaultInstance()) return this;
          if (other.hasStartAt()) {
            mergeStartAt(other.getStartAt());
          }
          if (other.hasStopAt()) {
            mergeStopAt(other.getStopAt());
          }
          if (other.hasStartAmmeter()) {
            setStartAmmeter(other.getStartAmmeter());
          }
          if (other.hasStopAmmeter()) {
            setStopAmmeter(other.getStopAmmeter());
          }
          if (other.hasStartSOC()) {
            setStartSOC(other.getStartSOC());
          }
          if (other.hasStopSOC()) {
            setStopSOC(other.getStopSOC());
          }
          if (other.hasDuration()) {
            setDuration(other.getDuration());
          }
          if (other.hasElectricQuantity()) {
            setElectricQuantity(other.getElectricQuantity());
          }
          if (other.hasUser()) {
            mergeUser(other.getUser());
          }
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          if (other.hasStopCause()) {
            setStopCause(other.getStopCause());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStartAt()) {
            return false;
          }
          if (!hasStopAt()) {
            return false;
          }
          if (!hasStartAmmeter()) {
            return false;
          }
          if (!hasStopAmmeter()) {
            return false;
          }
          if (!hasStartSOC()) {
            return false;
          }
          if (!hasStopSOC()) {
            return false;
          }
          if (!hasDuration()) {
            return false;
          }
          if (!hasElectricQuantity()) {
            return false;
          }
          if (!hasUser()) {
            return false;
          }
          if (!hasOrder()) {
            return false;
          }
          if (!hasStopCause()) {
            return false;
          }
          if (!getStartAt().isInitialized()) {
            return false;
          }
          if (!getStopAt().isInitialized()) {
            return false;
          }
          if (!getUser().isInitialized()) {
            return false;
          }
          if (!getOrder().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          OrderRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (OrderRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private FullDate startAt_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder> startAtBuilder_;
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        public boolean hasStartAt() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        public FullDate getStartAt() {
          if (startAtBuilder_ == null) {
            return startAt_ == null ? FullDate.getDefaultInstance() : startAt_;
          } else {
            return startAtBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        public Builder setStartAt(FullDate value) {
          if (startAtBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            startAt_ = value;
            onChanged();
          } else {
            startAtBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        public Builder setStartAt(
            FullDate.Builder builderForValue) {
          if (startAtBuilder_ == null) {
            startAt_ = builderForValue.build();
            onChanged();
          } else {
            startAtBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        public Builder mergeStartAt(FullDate value) {
          if (startAtBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001) &&
                startAt_ != null &&
                startAt_ != FullDate.getDefaultInstance()) {
              startAt_ =
                FullDate.newBuilder(startAt_).mergeFrom(value).buildPartial();
            } else {
              startAt_ = value;
            }
            onChanged();
          } else {
            startAtBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        public Builder clearStartAt() {
          if (startAtBuilder_ == null) {
            startAt_ = null;
            onChanged();
          } else {
            startAtBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        public FullDate.Builder getStartAtBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getStartAtFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        public FullDateOrBuilder getStartAtOrBuilder() {
          if (startAtBuilder_ != null) {
            return startAtBuilder_.getMessageOrBuilder();
          } else {
            return startAt_ == null ?
                FullDate.getDefaultInstance() : startAt_;
          }
        }
        /**
         * <pre>
         *开始时间
         * </pre>
         *
         * <code>required .FullDate startAt = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder>
            getStartAtFieldBuilder() {
          if (startAtBuilder_ == null) {
            startAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                FullDate, FullDate.Builder, FullDateOrBuilder>(
                    getStartAt(),
                    getParentForChildren(),
                    isClean());
            startAt_ = null;
          }
          return startAtBuilder_;
        }
  
        private FullDate stopAt_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder> stopAtBuilder_;
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        public boolean hasStopAt() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        public FullDate getStopAt() {
          if (stopAtBuilder_ == null) {
            return stopAt_ == null ? FullDate.getDefaultInstance() : stopAt_;
          } else {
            return stopAtBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        public Builder setStopAt(FullDate value) {
          if (stopAtBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            stopAt_ = value;
            onChanged();
          } else {
            stopAtBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        public Builder setStopAt(
            FullDate.Builder builderForValue) {
          if (stopAtBuilder_ == null) {
            stopAt_ = builderForValue.build();
            onChanged();
          } else {
            stopAtBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        public Builder mergeStopAt(FullDate value) {
          if (stopAtBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                stopAt_ != null &&
                stopAt_ != FullDate.getDefaultInstance()) {
              stopAt_ =
                FullDate.newBuilder(stopAt_).mergeFrom(value).buildPartial();
            } else {
              stopAt_ = value;
            }
            onChanged();
          } else {
            stopAtBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        public Builder clearStopAt() {
          if (stopAtBuilder_ == null) {
            stopAt_ = null;
            onChanged();
          } else {
            stopAtBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        public FullDate.Builder getStopAtBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getStopAtFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        public FullDateOrBuilder getStopAtOrBuilder() {
          if (stopAtBuilder_ != null) {
            return stopAtBuilder_.getMessageOrBuilder();
          } else {
            return stopAt_ == null ?
                FullDate.getDefaultInstance() : stopAt_;
          }
        }
        /**
         * <pre>
         *结束时间
         * </pre>
         *
         * <code>required .FullDate stopAt = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            FullDate, FullDate.Builder, FullDateOrBuilder>
            getStopAtFieldBuilder() {
          if (stopAtBuilder_ == null) {
            stopAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                FullDate, FullDate.Builder, FullDateOrBuilder>(
                    getStopAt(),
                    getParentForChildren(),
                    isClean());
            stopAt_ = null;
          }
          return stopAtBuilder_;
        }
  
        private float startAmmeter_ ;
        /**
         * <pre>
         *开始时电表电量
         * </pre>
         *
         * <code>required float startAmmeter = 3;</code>
         */
        public boolean hasStartAmmeter() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         *开始时电表电量
         * </pre>
         *
         * <code>required float startAmmeter = 3;</code>
         */
        public float getStartAmmeter() {
          return startAmmeter_;
        }
        /**
         * <pre>
         *开始时电表电量
         * </pre>
         *
         * <code>required float startAmmeter = 3;</code>
         */
        public Builder setStartAmmeter(float value) {
          bitField0_ |= 0x00000004;
          startAmmeter_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *开始时电表电量
         * </pre>
         *
         * <code>required float startAmmeter = 3;</code>
         */
        public Builder clearStartAmmeter() {
          bitField0_ = (bitField0_ & ~0x00000004);
          startAmmeter_ = 0F;
          onChanged();
          return this;
        }
  
        private float stopAmmeter_ ;
        /**
         * <pre>
         *结束是电表电量
         * </pre>
         *
         * <code>required float stopAmmeter = 4;</code>
         */
        public boolean hasStopAmmeter() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <pre>
         *结束是电表电量
         * </pre>
         *
         * <code>required float stopAmmeter = 4;</code>
         */
        public float getStopAmmeter() {
          return stopAmmeter_;
        }
        /**
         * <pre>
         *结束是电表电量
         * </pre>
         *
         * <code>required float stopAmmeter = 4;</code>
         */
        public Builder setStopAmmeter(float value) {
          bitField0_ |= 0x00000008;
          stopAmmeter_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *结束是电表电量
         * </pre>
         *
         * <code>required float stopAmmeter = 4;</code>
         */
        public Builder clearStopAmmeter() {
          bitField0_ = (bitField0_ & ~0x00000008);
          stopAmmeter_ = 0F;
          onChanged();
          return this;
        }
  
        private float startSOC_ ;
        /**
         * <pre>
         *开始时汽车电量百分比
         * </pre>
         *
         * <code>required float startSOC = 5;</code>
         */
        public boolean hasStartSOC() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <pre>
         *开始时汽车电量百分比
         * </pre>
         *
         * <code>required float startSOC = 5;</code>
         */
        public float getStartSOC() {
          return startSOC_;
        }
        /**
         * <pre>
         *开始时汽车电量百分比
         * </pre>
         *
         * <code>required float startSOC = 5;</code>
         */
        public Builder setStartSOC(float value) {
          bitField0_ |= 0x00000010;
          startSOC_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *开始时汽车电量百分比
         * </pre>
         *
         * <code>required float startSOC = 5;</code>
         */
        public Builder clearStartSOC() {
          bitField0_ = (bitField0_ & ~0x00000010);
          startSOC_ = 0F;
          onChanged();
          return this;
        }
  
        private float stopSOC_ ;
        /**
         * <pre>
         *结束时汽车电量百分比
         * </pre>
         *
         * <code>required float stopSOC = 6;</code>
         */
        public boolean hasStopSOC() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <pre>
         *结束时汽车电量百分比
         * </pre>
         *
         * <code>required float stopSOC = 6;</code>
         */
        public float getStopSOC() {
          return stopSOC_;
        }
        /**
         * <pre>
         *结束时汽车电量百分比
         * </pre>
         *
         * <code>required float stopSOC = 6;</code>
         */
        public Builder setStopSOC(float value) {
          bitField0_ |= 0x00000020;
          stopSOC_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *结束时汽车电量百分比
         * </pre>
         *
         * <code>required float stopSOC = 6;</code>
         */
        public Builder clearStopSOC() {
          bitField0_ = (bitField0_ & ~0x00000020);
          stopSOC_ = 0F;
          onChanged();
          return this;
        }
  
        private int duration_ ;
        /**
         * <pre>
         *充电时长,单位:秒
         * </pre>
         *
         * <code>required uint32 duration = 7;</code>
         */
        public boolean hasDuration() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <pre>
         *充电时长,单位:秒
         * </pre>
         *
         * <code>required uint32 duration = 7;</code>
         */
        public int getDuration() {
          return duration_;
        }
        /**
         * <pre>
         *充电时长,单位:秒
         * </pre>
         *
         * <code>required uint32 duration = 7;</code>
         */
        public Builder setDuration(int value) {
          bitField0_ |= 0x00000040;
          duration_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *充电时长,单位:秒
         * </pre>
         *
         * <code>required uint32 duration = 7;</code>
         */
        public Builder clearDuration() {
          bitField0_ = (bitField0_ & ~0x00000040);
          duration_ = 0;
          onChanged();
          return this;
        }
  
        private float electricQuantity_ ;
        /**
         * <pre>
         *充电电量
         * </pre>
         *
         * <code>required float electricQuantity = 8;</code>
         */
        public boolean hasElectricQuantity() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <pre>
         *充电电量
         * </pre>
         *
         * <code>required float electricQuantity = 8;</code>
         */
        public float getElectricQuantity() {
          return electricQuantity_;
        }
        /**
         * <pre>
         *充电电量
         * </pre>
         *
         * <code>required float electricQuantity = 8;</code>
         */
        public Builder setElectricQuantity(float value) {
          bitField0_ |= 0x00000080;
          electricQuantity_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *充电电量
         * </pre>
         *
         * <code>required float electricQuantity = 8;</code>
         */
        public Builder clearElectricQuantity() {
          bitField0_ = (bitField0_ & ~0x00000080);
          electricQuantity_ = 0F;
          onChanged();
          return this;
        }
  
        private User user_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            User, User.Builder, UserOrBuilder> userBuilder_;
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        public boolean hasUser() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        public User getUser() {
          if (userBuilder_ == null) {
            return user_ == null ? User.getDefaultInstance() : user_;
          } else {
            return userBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        public Builder setUser(User value) {
          if (userBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            user_ = value;
            onChanged();
          } else {
            userBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        public Builder setUser(
            User.Builder builderForValue) {
          if (userBuilder_ == null) {
            user_ = builderForValue.build();
            onChanged();
          } else {
            userBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        public Builder mergeUser(User value) {
          if (userBuilder_ == null) {
            if (((bitField0_ & 0x00000100) == 0x00000100) &&
                user_ != null &&
                user_ != User.getDefaultInstance()) {
              user_ =
                User.newBuilder(user_).mergeFrom(value).buildPartial();
            } else {
              user_ = value;
            }
            onChanged();
          } else {
            userBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        public Builder clearUser() {
          if (userBuilder_ == null) {
            user_ = null;
            onChanged();
          } else {
            userBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          return this;
        }
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        public User.Builder getUserBuilder() {
          bitField0_ |= 0x00000100;
          onChanged();
          return getUserFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        public UserOrBuilder getUserOrBuilder() {
          if (userBuilder_ != null) {
            return userBuilder_.getMessageOrBuilder();
          } else {
            return user_ == null ?
                User.getDefaultInstance() : user_;
          }
        }
        /**
         * <pre>
         *用户
         * </pre>
         *
         * <code>required .User user = 9;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            User, User.Builder, UserOrBuilder>
            getUserFieldBuilder() {
          if (userBuilder_ == null) {
            userBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                User, User.Builder, UserOrBuilder>(
                    getUser(),
                    getParentForChildren(),
                    isClean());
            user_ = null;
          }
          return userBuilder_;
        }
  
        private Order order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder> orderBuilder_;
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        public Order getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? Order.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        public Builder setOrder(Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        public Builder setOrder(
            Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        public Builder mergeOrder(Order value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000200) == 0x00000200) &&
                order_ != null &&
                order_ != Order.getDefaultInstance()) {
              order_ =
                Order.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000200;
          return this;
        }
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        public Order.Builder getOrderBuilder() {
          bitField0_ |= 0x00000200;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        public OrderOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                Order.getDefaultInstance() : order_;
          }
        }
        /**
         * <pre>
         *订单信息
         * </pre>
         *
         * <code>required .Order order = 10;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Order, Order.Builder, OrderOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
  
        private int stopCause_ = 0;
        /**
         * <pre>
         *停止原因
         * </pre>
         *
         * <code>required .OrderRequest.StopCause stopCause = 11;</code>
         */
        public boolean hasStopCause() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * <pre>
         *停止原因
         * </pre>
         *
         * <code>required .OrderRequest.StopCause stopCause = 11;</code>
         */
        public StopCause getStopCause() {
          StopCause result = StopCause.valueOf(stopCause_);
          return result == null ? StopCause.BALANCE : result;
        }
        /**
         * <pre>
         *停止原因
         * </pre>
         *
         * <code>required .OrderRequest.StopCause stopCause = 11;</code>
         */
        public Builder setStopCause(StopCause value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000400;
          stopCause_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *停止原因
         * </pre>
         *
         * <code>required .OrderRequest.StopCause stopCause = 11;</code>
         */
        public Builder clearStopCause() {
          bitField0_ = (bitField0_ & ~0x00000400);
          stopCause_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:OrderRequest)
      }
  
      // @@protoc_insertion_point(class_scope:OrderRequest)
      private static final OrderRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new OrderRequest();
      }
  
      public static OrderRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<OrderRequest>
          PARSER = new com.google.protobuf.AbstractParser<OrderRequest>() {
        public OrderRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new OrderRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<OrderRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<OrderRequest> getParserForType() {
        return PARSER;
      }
  
      public OrderRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface OrderResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:OrderResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
  
      /**
       * <code>required .Order order = 2;</code>
       */
      boolean hasOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      Order getOrder();
      /**
       * <code>required .Order order = 2;</code>
       */
      OrderOrBuilder getOrderOrBuilder();
    }
    /**
     * <pre>
     *充电记录回复 MessageType.ORDER_RESPONSE
     * </pre>
     *
     * Protobuf type {@code OrderResponse}
     */
    public  static final class OrderResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:OrderResponse)
        OrderResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use OrderResponse.newBuilder() to construct.
      private OrderResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private OrderResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private OrderResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                break;
              }
              case 18: {
                Order.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = order_.toBuilder();
                }
                order_ = input.readMessage(Order.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(order_);
                  order_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                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 DeviceMessage.internal_static_OrderResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_OrderResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                OrderResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      public static final int ORDER_FIELD_NUMBER = 2;
      private Order order_;
      /**
       * <code>required .Order order = 2;</code>
       */
      public boolean hasOrder() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public Order getOrder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
      /**
       * <code>required .Order order = 2;</code>
       */
      public OrderOrBuilder getOrderOrBuilder() {
        return order_ == null ? Order.getDefaultInstance() : order_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOrder()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getOrder().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, getOrder());
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getOrder());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof OrderResponse)) {
          return super.equals(obj);
        }
        OrderResponse other = (OrderResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && (hasOrder() == other.hasOrder());
        if (hasOrder()) {
          result = result && getOrder()
              .equals(other.getOrder());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        if (hasOrder()) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrder().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static OrderResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static OrderResponse 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 OrderResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static OrderResponse 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 OrderResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static OrderResponse 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(OrderResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *充电记录回复 MessageType.ORDER_RESPONSE
       * </pre>
       *
       * Protobuf type {@code OrderResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:OrderResponse)
          OrderResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_OrderResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_OrderResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  OrderResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.OrderResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getOrderFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (orderBuilder_ == null) {
            order_ = null;
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_OrderResponse_descriptor;
        }
  
        public OrderResponse getDefaultInstanceForType() {
          return OrderResponse.getDefaultInstance();
        }
  
        public OrderResponse build() {
          OrderResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public OrderResponse buildPartial() {
          OrderResponse result = new OrderResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (orderBuilder_ == null) {
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof OrderResponse) {
            return mergeFrom((OrderResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(OrderResponse other) {
          if (other == OrderResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          if (other.hasOrder()) {
            mergeOrder(other.getOrder());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          if (!hasOrder()) {
            return false;
          }
          if (!getOrder().isInitialized()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          OrderResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (OrderResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
  
        private Order order_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder> orderBuilder_;
        /**
         * <code>required .Order order = 2;</code>
         */
        public boolean hasOrder() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order getOrder() {
          if (orderBuilder_ == null) {
            return order_ == null ? Order.getDefaultInstance() : order_;
          } else {
            return orderBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            order_ = value;
            onChanged();
          } else {
            orderBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder setOrder(
            Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            order_ = builderForValue.build();
            onChanged();
          } else {
            orderBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder mergeOrder(Order value) {
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                order_ != null &&
                order_ != Order.getDefaultInstance()) {
              order_ =
                Order.newBuilder(order_).mergeFrom(value).buildPartial();
            } else {
              order_ = value;
            }
            onChanged();
          } else {
            orderBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = null;
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public Order.Builder getOrderBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getOrderFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        public OrderOrBuilder getOrderOrBuilder() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilder();
          } else {
            return order_ == null ?
                Order.getDefaultInstance() : order_;
          }
        }
        /**
         * <code>required .Order order = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            Order, Order.Builder, OrderOrBuilder>
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                Order, Order.Builder, OrderOrBuilder>(
                    getOrder(),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:OrderResponse)
      }
  
      // @@protoc_insertion_point(class_scope:OrderResponse)
      private static final OrderResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new OrderResponse();
      }
  
      public static OrderResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<OrderResponse>
          PARSER = new com.google.protobuf.AbstractParser<OrderResponse>() {
        public OrderResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new OrderResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<OrderResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<OrderResponse> getParserForType() {
        return PARSER;
      }
  
      public OrderResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface OrderCancelRequestOrBuilder extends
        // @@protoc_insertion_point(interface_extends:OrderCancelRequest)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
    }
    /**
     * <pre>
     *交易取消 MessageType.ORDER_CANCEL_REQUEST
     * </pre>
     *
     * Protobuf type {@code OrderCancelRequest}
     */
    public  static final class OrderCancelRequest extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:OrderCancelRequest)
        OrderCancelRequestOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use OrderCancelRequest.newBuilder() to construct.
      private OrderCancelRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private OrderCancelRequest() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private OrderCancelRequest(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                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 DeviceMessage.internal_static_OrderCancelRequest_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_OrderCancelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                OrderCancelRequest.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof OrderCancelRequest)) {
          return super.equals(obj);
        }
        OrderCancelRequest other = (OrderCancelRequest) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static OrderCancelRequest parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderCancelRequest parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderCancelRequest parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderCancelRequest parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderCancelRequest parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderCancelRequest parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderCancelRequest parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static OrderCancelRequest 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 OrderCancelRequest parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static OrderCancelRequest 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 OrderCancelRequest parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static OrderCancelRequest 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(OrderCancelRequest prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *交易取消 MessageType.ORDER_CANCEL_REQUEST
       * </pre>
       *
       * Protobuf type {@code OrderCancelRequest}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:OrderCancelRequest)
          OrderCancelRequestOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_OrderCancelRequest_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_OrderCancelRequest_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  OrderCancelRequest.class, Builder.class);
        }
  
        // Construct using DeviceMessage.OrderCancelRequest.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_OrderCancelRequest_descriptor;
        }
  
        public OrderCancelRequest getDefaultInstanceForType() {
          return OrderCancelRequest.getDefaultInstance();
        }
  
        public OrderCancelRequest build() {
          OrderCancelRequest result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public OrderCancelRequest buildPartial() {
          OrderCancelRequest result = new OrderCancelRequest(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof OrderCancelRequest) {
            return mergeFrom((OrderCancelRequest)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(OrderCancelRequest other) {
          if (other == OrderCancelRequest.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          OrderCancelRequest parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (OrderCancelRequest) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:OrderCancelRequest)
      }
  
      // @@protoc_insertion_point(class_scope:OrderCancelRequest)
      private static final OrderCancelRequest DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new OrderCancelRequest();
      }
  
      public static OrderCancelRequest getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<OrderCancelRequest>
          PARSER = new com.google.protobuf.AbstractParser<OrderCancelRequest>() {
        public OrderCancelRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new OrderCancelRequest(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<OrderCancelRequest> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<OrderCancelRequest> getParserForType() {
        return PARSER;
      }
  
      public OrderCancelRequest getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface OrderCancelResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:OrderCancelResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      boolean hasStatusCode();
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      StatusCode getStatusCode();
    }
    /**
     * <pre>
     *交易取消回复 MessageType.ORDER_CANCEL_RESPONSE
     * </pre>
     *
     * Protobuf type {@code OrderCancelResponse}
     */
    public  static final class OrderCancelResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:OrderCancelResponse)
        OrderCancelResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use OrderCancelResponse.newBuilder() to construct.
      private OrderCancelResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private OrderCancelResponse() {
        statusCode_ = 0;
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private OrderCancelResponse(
          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 (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                StatusCode value = StatusCode.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  statusCode_ = rawValue;
                }
                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 DeviceMessage.internal_static_OrderCancelResponse_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_OrderCancelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                OrderCancelResponse.class, Builder.class);
      }
  
      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statusCode_;
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public boolean hasStatusCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .StatusCode statusCode = 1;</code>
       */
      public StatusCode getStatusCode() {
        StatusCode result = StatusCode.valueOf(statusCode_);
        return result == null ? StatusCode.SUCCESS : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasStatusCode()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, statusCode_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, statusCode_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof OrderCancelResponse)) {
          return super.equals(obj);
        }
        OrderCancelResponse other = (OrderCancelResponse) obj;
  
        boolean result = true;
        result = result && (hasStatusCode() == other.hasStatusCode());
        if (hasStatusCode()) {
          result = result && statusCode_ == other.statusCode_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatusCode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + statusCode_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static OrderCancelResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderCancelResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderCancelResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderCancelResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderCancelResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static OrderCancelResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static OrderCancelResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static OrderCancelResponse 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 OrderCancelResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static OrderCancelResponse 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 OrderCancelResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static OrderCancelResponse 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(OrderCancelResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *交易取消回复 MessageType.ORDER_CANCEL_RESPONSE
       * </pre>
       *
       * Protobuf type {@code OrderCancelResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:OrderCancelResponse)
          OrderCancelResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_OrderCancelResponse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_OrderCancelResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  OrderCancelResponse.class, Builder.class);
        }
  
        // Construct using DeviceMessage.OrderCancelResponse.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();
          statusCode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DeviceMessage.internal_static_OrderCancelResponse_descriptor;
        }
  
        public OrderCancelResponse getDefaultInstanceForType() {
          return OrderCancelResponse.getDefaultInstance();
        }
  
        public OrderCancelResponse build() {
          OrderCancelResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public OrderCancelResponse buildPartial() {
          OrderCancelResponse result = new OrderCancelResponse(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.statusCode_ = statusCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof OrderCancelResponse) {
            return mergeFrom((OrderCancelResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(OrderCancelResponse other) {
          if (other == OrderCancelResponse.getDefaultInstance()) return this;
          if (other.hasStatusCode()) {
            setStatusCode(other.getStatusCode());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasStatusCode()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          OrderCancelResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (OrderCancelResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int statusCode_ = 0;
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public boolean hasStatusCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public StatusCode getStatusCode() {
          StatusCode result = StatusCode.valueOf(statusCode_);
          return result == null ? StatusCode.SUCCESS : result;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder setStatusCode(StatusCode value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          statusCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>required .StatusCode statusCode = 1;</code>
         */
        public Builder clearStatusCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statusCode_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:OrderCancelResponse)
      }
  
      // @@protoc_insertion_point(class_scope:OrderCancelResponse)
      private static final OrderCancelResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new OrderCancelResponse();
      }
  
      public static OrderCancelResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<OrderCancelResponse>
          PARSER = new com.google.protobuf.AbstractParser<OrderCancelResponse>() {
        public OrderCancelResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new OrderCancelResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<OrderCancelResponse> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<OrderCancelResponse> getParserForType() {
        return PARSER;
      }
  
      public OrderCancelResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface AcknowledgementOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Acknowledgement)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     *消息确认 MessageType.ACKNOWLEDGEMENT
     * </pre>
     *
     * Protobuf type {@code Acknowledgement}
     */
    public  static final class Acknowledgement extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Acknowledgement)
        AcknowledgementOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Acknowledgement.newBuilder() to construct.
      private Acknowledgement(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Acknowledgement() {
      }
  
      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Acknowledgement(
          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 (!parseUnknownField(
                    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 DeviceMessage.internal_static_Acknowledgement_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceMessage.internal_static_Acknowledgement_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Acknowledgement.class, 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;
      }
  
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof Acknowledgement)) {
          return super.equals(obj);
        }
        Acknowledgement other = (Acknowledgement) obj;
  
        boolean result = true;
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @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 Acknowledgement parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Acknowledgement parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Acknowledgement parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Acknowledgement parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Acknowledgement parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static Acknowledgement parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static Acknowledgement parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Acknowledgement 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 Acknowledgement parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static Acknowledgement 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 Acknowledgement parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static Acknowledgement 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(Acknowledgement prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *消息确认 MessageType.ACKNOWLEDGEMENT
       * </pre>
       *
       * Protobuf type {@code Acknowledgement}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Acknowledgement)
          AcknowledgementOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DeviceMessage.internal_static_Acknowledgement_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DeviceMessage.internal_static_Acknowledgement_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  Acknowledgement.class, Builder.class);
        }
  
        // Construct using DeviceMessage.Acknowledgement.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 DeviceMessage.internal_static_Acknowledgement_descriptor;
        }
  
        public Acknowledgement getDefaultInstanceForType() {
          return Acknowledgement.getDefaultInstance();
        }
  
        public Acknowledgement build() {
          Acknowledgement result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public Acknowledgement buildPartial() {
          Acknowledgement result = new Acknowledgement(this);
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            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, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof Acknowledgement) {
            return mergeFrom((Acknowledgement)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(Acknowledgement other) {
          if (other == Acknowledgement.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 {
          Acknowledgement parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (Acknowledgement) 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.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Acknowledgement)
      }
  
      // @@protoc_insertion_point(class_scope:Acknowledgement)
      private static final Acknowledgement DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new Acknowledgement();
      }
  
      public static Acknowledgement getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @Deprecated public static final com.google.protobuf.Parser<Acknowledgement>
          PARSER = new com.google.protobuf.AbstractParser<Acknowledgement>() {
        public Acknowledgement parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Acknowledgement(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Acknowledgement> parser() {
        return PARSER;
      }
  
      @Override
      public com.google.protobuf.Parser<Acknowledgement> getParserForType() {
        return PARSER;
      }
  
      public Acknowledgement getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Wallet_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Wallet_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_User_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_User_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Coordinates_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Coordinates_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_FullDate_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_FullDate_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Rate_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Rate_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Order_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Order_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_CarInfo_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_CarInfo_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_DeviceInfo_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_DeviceInfo_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_HeartbeatRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_HeartbeatRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_HeartbeatResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_HeartbeatResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_DeviceLoginRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_DeviceLoginRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_DeviceLoginResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_DeviceLoginResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_SettingDateRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_SettingDateRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_SettingDateResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_SettingDateResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_SettingQRRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_SettingQRRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_SettingQRResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_SettingQRResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_SettingRateRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_SettingRateRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_SettingRateResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_SettingRateResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_RateQueryRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_RateQueryRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_RateQueryResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_RateQueryResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MonitoringRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MonitoringRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MonitoringResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MonitoringResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ControlRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ControlRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ControlResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ControlResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_UpgradeRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_UpgradeRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_UpgradeResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_UpgradeResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ReserveRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ReserveRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ReserveResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ReserveResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ReserveCancelRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ReserveCancelRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ReserveCancelResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ReserveCancelResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ReserveQueryRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ReserveQueryRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ReserveQueryResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ReserveQueryResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_VerifyRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_VerifyRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_VerifyResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_VerifyResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_StartChargeRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_StartChargeRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_StartChargeResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_StartChargeResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_StopChargeRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_StopChargeRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_StopChargeResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_StopChargeResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ChargeGunRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ChargeGunRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_ChargeGunResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_ChargeGunResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_OrderRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_OrderRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_OrderResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_OrderResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_OrderCancelRequest_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_OrderCancelRequest_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_OrderCancelResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_OrderCancelResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Acknowledgement_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Acknowledgement_fieldAccessorTable;
  
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static  com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      String[] descriptorData = {
        "\n\023DeviceMessage.proto\"\031\n\006Wallet\022\017\n\007balan" +
        "ce\030\001 \002(\002\"+\n\004User\022\n\n\002id\030\001 \002(\t\022\027\n\006wallet\030\002" +
        " \001(\0132\007.Wallet\"\'\n\013Coordinates\022\013\n\003lng\030\001 \002(" +
        "\001\022\013\n\003lat\030\002 \002(\001\"_\n\010FullDate\022\014\n\004year\030\001 \002(\r" +
        "\022\r\n\005month\030\002 \002(\r\022\013\n\003day\030\003 \002(\r\022\014\n\004hour\030\004 \002" +
        "(\r\022\016\n\006minute\030\005 \002(\r\022\013\n\003sec\030\006 \002(\r\">\n\004Rate\022" +
        "\013\n\003top\030\001 \002(\002\022\014\n\004high\030\002 \002(\002\022\016\n\006middle\030\003 \002" +
        "(\002\022\013\n\003low\030\004 \002(\002\"2\n\005Order\022\n\n\002id\030\001 \002(\t\022\016\n\006" +
        "number\030\002 \002(\t\022\r\n\005trade\030\003 \001(\t\"\035\n\007CarInfo\022\022" +
        "\n\ncurrentSOC\030\001 \002(\002\"\351\005\n\nDeviceInfo\022$\n\004typ",
        "e\030\001 \002(\0162\026.DeviceInfo.DeviceType\022\r\n\005power" +
        "\030\002 \002(\002\022\017\n\007ammeter\030\003 \002(\002\022\032\n\022alternatingvo" +
        "ltage\030\004 \001(\002\022\025\n\rdirectvoltage\030\005 \001(\002\022\036\n\026al" +
        "ternatingelectricity\030\006 \001(\002\022\031\n\021directelec" +
        "tricity\030\007 \001(\002\022\"\n\006status\030\010 \001(\0162\022.DeviceIn" +
        "fo.Status\0224\n\017stopchargecause\030\t \001(\0162\033.Dev" +
        "iceInfo.StopChargeCause\022!\n\006faults\030\n \003(\0162" +
        "\021.DeviceInfo.Fault\"R\n\nDeviceType\022\024\n\020SING" +
        "_ALTERNATING\020\000\022\025\n\021THREE_ALTERNATING\020\001\022\n\n" +
        "\006DIRECT\020\002\022\013\n\007MIXTURE\020\003\"s\n\006Status\022\013\n\007RESE",
        "RVE\020\000\022\013\n\007STANDBY\020\001\022\013\n\007OFFLINE\020\002\022\t\n\005FAULT" +
        "\020\003\022\n\n\006CHARGE\020\004\022\010\n\004STOP\020\005\022\t\n\005PAUSE\020\006\022\014\n\010M" +
        "AINTAIN\020\007\022\010\n\004TEST\020\010\"\\\n\017StopChargeCause\022\014" +
        "\n\010TIME_OUT\020\000\022\025\n\021ELECTRIC_QUANTITY\020\001\022\010\n\004C" +
        "OST\020\002\022\014\n\010CAR_STOP\020\003\022\014\n\010GUN_PULL\020\004\"\202\001\n\005Fa" +
        "ult\022\010\n\004CARD\020\000\022\013\n\007AMMETER\020\001\022\t\n\005BREAK\020\002\022\020\n" +
        "\014OVER_VOLTAGE\020\003\022\021\n\rUNDER_VOLTAGE\020\004\022\020\n\014OV" +
        "ER_CURRENT\020\005\022\023\n\017BATTERY_CHARGER\020\006\022\013\n\007UNK" +
        "NOWN\020\007\"D\n\020HeartbeatRequest\022\020\n\010deviceId\030\001" +
        " \002(\t\022\r\n\005count\030\002 \002(\r\022\017\n\007timeout\030\003 \002(\r\"\"\n\021",
        "HeartbeatResponse\022\r\n\005delay\030\001 \002(\r\"&\n\022Devi" +
        "ceLoginRequest\022\020\n\010deviceId\030\001 \002(\t\"O\n\023Devi" +
        "ceLoginResponse\022\037\n\nstatusCode\030\001 \002(\0162\013.St" +
        "atusCode\022\027\n\004date\030\002 \001(\0132\t.FullDate\"-\n\022Set" +
        "tingDateRequest\022\027\n\004date\030\001 \002(\0132\t.FullDate" +
        "\".\n\023SettingDateResponse\022\027\n\004date\030\001 \002(\0132\t." +
        "FullDate\"#\n\020SettingQRRequest\022\017\n\007content\030" +
        "\001 \002(\t\"4\n\021SettingQRResponse\022\037\n\nstatusCode" +
        "\030\001 \002(\0162\013.StatusCode\")\n\022SettingRateReques" +
        "t\022\023\n\004rate\030\001 \002(\0132\005.Rate\"6\n\023SettingRateRes",
        "ponse\022\037\n\nstatusCode\030\001 \002(\0162\013.StatusCode\"\022" +
        "\n\020RateQueryRequest\"(\n\021RateQueryResponse\022" +
        "\023\n\004rate\030\001 \002(\0132\005.Rate\"\023\n\021MonitoringReques" +
        "t\"P\n\022MonitoringResponse\022\037\n\ndeviceInfo\030\001 " +
        "\002(\0132\013.DeviceInfo\022\031\n\007carInfo\030\002 \001(\0132\010.CarI" +
        "nfo\".\n\016ControlRequest\022\034\n\003cmd\030\001 \002(\0162\017.Con" +
        "trolCommand\"P\n\017ControlResponse\022\037\n\nstatus" +
        "Code\030\001 \002(\0162\013.StatusCode\022\034\n\003cmd\030\002 \002(\0162\017.C" +
        "ontrolCommand\"\035\n\016UpgradeRequest\022\013\n\003url\030\001" +
        " \002(\t\"2\n\017UpgradeResponse\022\037\n\nstatusCode\030\001 ",
        "\002(\0162\013.StatusCode\"@\n\016ReserveRequest\022\027\n\004da" +
        "te\030\001 \002(\0132\t.FullDate\022\025\n\005order\030\002 \002(\0132\006.Ord" +
        "er\"I\n\017ReserveResponse\022\037\n\nstatusCode\030\001 \002(" +
        "\0162\013.StatusCode\022\025\n\005order\030\002 \002(\0132\006.Order\"-\n" +
        "\024ReserveCancelRequest\022\025\n\005order\030\001 \002(\0132\006.O" +
        "rder\"O\n\025ReserveCancelResponse\022\037\n\nstatusC" +
        "ode\030\001 \002(\0162\013.StatusCode\022\025\n\005order\030\002 \002(\0132\006." +
        "Order\"\025\n\023ReserveQueryRequest\"F\n\024ReserveQ" +
        "ueryResponse\022\027\n\004date\030\001 \002(\0132\t.FullDate\022\025\n" +
        "\005order\030\002 \002(\0132\006.Order\"d\n\rVerifyRequest\022\016\n",
        "\006verify\030\001 \002(\010\022\023\n\004user\030\002 \002(\0132\005.User\022\025\n\005or" +
        "der\030\003 \002(\0132\006.Order\022\027\n\017offlinePassword\030\004 \002" +
        "(\t\"1\n\016VerifyResponse\022\037\n\nstatusCode\030\001 \002(\016" +
        "2\013.StatusCode\"\263\001\n\022StartChargeRequest\0222\n\n" +
        "chargeType\030\001 \002(\0162\036.StartChargeRequest.Ch" +
        "argeType\022\022\n\nchargeData\030\002 \001(\005\"U\n\nChargeTy" +
        "pe\022\n\n\006TIMING\020\000\022\014\n\010ELECTRIC\020\001\022\014\n\010DURATION" +
        "\020\002\022\010\n\004FEES\020\003\022\010\n\004FULL\020\004\022\013\n\007UNKNOWN\020\005\"6\n\023S" +
        "tartChargeResponse\022\037\n\nstatusCode\030\001 \002(\0162\013" +
        ".StatusCode\"\023\n\021StopChargeRequest\"S\n\022Stop",
        "ChargeResponse\022\037\n\nstatusCode\030\001 \002(\0162\013.Sta" +
        "tusCode\022\034\n\005order\030\002 \001(\0132\r.OrderRequest\"\211\001" +
        "\n\020ChargeGunRequest\022+\n\006status\030\001 \002(\0162\033.Cha" +
        "rgeGunRequest.GunStatus\"H\n\tGunStatus\022\021\n\r" +
        "NOT_CONNECTED\020\000\022\r\n\tCONNECTED\020\001\022\016\n\nCHARGE" +
        "ABLE\020\002\022\t\n\005FAULT\020\003\"4\n\021ChargeGunResponse\022\037" +
        "\n\nstatusCode\030\001 \002(\0162\013.StatusCode\"\325\003\n\014Orde" +
        "rRequest\022\032\n\007startAt\030\001 \002(\0132\t.FullDate\022\031\n\006" +
        "stopAt\030\002 \002(\0132\t.FullDate\022\024\n\014startAmmeter\030" +
        "\003 \002(\002\022\023\n\013stopAmmeter\030\004 \002(\002\022\020\n\010startSOC\030\005",
        " \002(\002\022\017\n\007stopSOC\030\006 \002(\002\022\020\n\010duration\030\007 \002(\r\022" +
        "\030\n\020electricQuantity\030\010 \002(\002\022\023\n\004user\030\t \002(\0132" +
        "\005.User\022\025\n\005order\030\n \002(\0132\006.Order\022*\n\tstopCau" +
        "se\030\013 \002(\0162\027.OrderRequest.StopCause\"\273\001\n\tSt" +
        "opCause\022\013\n\007BALANCE\020\000\022\014\n\010ELECTRIC\020\001\022\010\n\004FE" +
        "ES\020\002\022\n\n\006TIMING\020\003\022\014\n\010CAR_STOP\020\004\022\r\n\tUSER_S" +
        "TOP\020\005\022\017\n\013OUTPUT_FAIL\020\006\022\t\n\005FAULT\020\007\022\016\n\nNON" +
        "PAYMENT\020\010\022\r\n\tEXCEPTION\020\t\022%\n!ORDER_REQUES" +
        "T__STOP_CAUSE__OUTAGE\020\n\"G\n\rOrderResponse" +
        "\022\037\n\nstatusCode\030\001 \002(\0162\013.StatusCode\022\025\n\005ord",
        "er\030\002 \002(\0132\006.Order\"5\n\022OrderCancelRequest\022\037" +
        "\n\nstatusCode\030\001 \002(\0162\013.StatusCode\"6\n\023Order" +
        "CancelResponse\022\037\n\nstatusCode\030\001 \002(\0162\013.Sta" +
        "tusCode\"\021\n\017Acknowledgement*\240\007\n\013MessageTy" +
        "pe\022\025\n\021HEARTBEAT_REQUEST\020\001\022\026\n\022HEARTBEAT_R" +
        "ESPONSE\020\002\022\030\n\024DEVICE_LOGIN_REQUEST\020\003\022\031\n\025D" +
        "EVICE_LOGIN_RESPONSE\020\004\022\023\n\017ACKNOWLEDGEMEN" +
        "T\020\005\022\030\n\024SETTING_DATE_REQUEST\020\n\022\031\n\025SETTING" +
        "_DATE_RESPONSE\020\013\022\026\n\022SETTING_QR_REQUEST\020\014" +
        "\022\027\n\023SETTING_QR_RESPONSE\020\r\022\030\n\024SETTING_RAT",
        "E_REQUEST\020\016\022\031\n\025SETTING_RATE_RESPONSE\020\017\022\026" +
        "\n\022RATE_QUERY_REQUEST\020\024\022\027\n\023RATE_QUERY_RES" +
        "PONSE\020\025\022\026\n\022MONITORING_REQUEST\020\026\022\027\n\023MONIT" +
        "ORING_RESPONSE\020\027\022\023\n\017RESERVE_REQUEST\020\036\022\024\n" +
        "\020RESERVE_RESPONSE\020\037\022\031\n\025RESERVE_QUERY_REQ" +
        "UEST\020 \022\032\n\026RESERVE_QUERY_RESPONSE\020!\022\032\n\026RE" +
        "SERVE_CANCEL_REQUEST\020\"\022\033\n\027RESERVE_CANCEL" +
        "_RESPONSE\020#\022\022\n\016VERIFY_REQUEST\020(\022\023\n\017VERIF" +
        "Y_RESPONSE\020)\022\030\n\024START_CHARGE_REQUEST\020*\022\031" +
        "\n\025START_CHARGE_RESPONSE\020+\022\027\n\023STOP_CHARGE",
        "_REQUEST\020,\022\030\n\024STOP_CHARGE_RESPONSE\020-\022\026\n\022" +
        "CHARGE_GUN_REQUEST\020.\022\027\n\023CHARGE_GUN_RESPO" +
        "NSE\020/\022\021\n\rORDER_REQUEST\0202\022\022\n\016ORDER_RESPON" +
        "SE\0203\022\030\n\024ORDER_CANCEL_REQUEST\0204\022\031\n\025ORDER_" +
        "CANCEL_RESPONSE\0205\022\032\n\026DEVICE_CONTROL_REQU" +
        "EST\020<\022\033\n\027DEVICE_CONTROL_RESPONSE\020=\022\023\n\017UP" +
        "GRADE_REQUEST\020>\022\024\n\020UPGRADE_RESPONSE\020?*.\n" +
        "\nStatusCode\022\013\n\007SUCCESS\020\000\022\010\n\004FAIL\020\001\022\t\n\005ER" +
        "ROR\020\002*X\n\016ControlCommand\022\013\n\007WORKING\020\000\022\t\n\005" +
        "PAUSE\020\001\022\014\n\010MAINTAIN\020\002\022\010\n\004TEST\020\003\022\013\n\007RESTA",
        "RT\020\004\022\t\n\005RESET\020\005"
      };
      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_Wallet_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_Wallet_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Wallet_descriptor,
          new String[] { "Balance", });
      internal_static_User_descriptor =
        getDescriptor().getMessageTypes().get(1);
      internal_static_User_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_User_descriptor,
          new String[] { "Id", "Wallet", });
      internal_static_Coordinates_descriptor =
        getDescriptor().getMessageTypes().get(2);
      internal_static_Coordinates_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Coordinates_descriptor,
          new String[] { "Lng", "Lat", });
      internal_static_FullDate_descriptor =
        getDescriptor().getMessageTypes().get(3);
      internal_static_FullDate_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_FullDate_descriptor,
          new String[] { "Year", "Month", "Day", "Hour", "Minute", "Sec", });
      internal_static_Rate_descriptor =
        getDescriptor().getMessageTypes().get(4);
      internal_static_Rate_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Rate_descriptor,
          new String[] { "Top", "High", "Middle", "Low", });
      internal_static_Order_descriptor =
        getDescriptor().getMessageTypes().get(5);
      internal_static_Order_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Order_descriptor,
          new String[] { "Id", "Number", "Trade", });
      internal_static_CarInfo_descriptor =
        getDescriptor().getMessageTypes().get(6);
      internal_static_CarInfo_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_CarInfo_descriptor,
          new String[] { "CurrentSOC", });
      internal_static_DeviceInfo_descriptor =
        getDescriptor().getMessageTypes().get(7);
      internal_static_DeviceInfo_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_DeviceInfo_descriptor,
          new String[] { "Type", "Power", "Ammeter", "Alternatingvoltage", "Directvoltage", "Alternatingelectricity", "Directelectricity", "Status", "Stopchargecause", "Faults", });
      internal_static_HeartbeatRequest_descriptor =
        getDescriptor().getMessageTypes().get(8);
      internal_static_HeartbeatRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_HeartbeatRequest_descriptor,
          new String[] { "DeviceId", "Count", "Timeout", });
      internal_static_HeartbeatResponse_descriptor =
        getDescriptor().getMessageTypes().get(9);
      internal_static_HeartbeatResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_HeartbeatResponse_descriptor,
          new String[] { "Delay", });
      internal_static_DeviceLoginRequest_descriptor =
        getDescriptor().getMessageTypes().get(10);
      internal_static_DeviceLoginRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_DeviceLoginRequest_descriptor,
          new String[] { "DeviceId", });
      internal_static_DeviceLoginResponse_descriptor =
        getDescriptor().getMessageTypes().get(11);
      internal_static_DeviceLoginResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_DeviceLoginResponse_descriptor,
          new String[] { "StatusCode", "Date", });
      internal_static_SettingDateRequest_descriptor =
        getDescriptor().getMessageTypes().get(12);
      internal_static_SettingDateRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_SettingDateRequest_descriptor,
          new String[] { "Date", });
      internal_static_SettingDateResponse_descriptor =
        getDescriptor().getMessageTypes().get(13);
      internal_static_SettingDateResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_SettingDateResponse_descriptor,
          new String[] { "Date", });
      internal_static_SettingQRRequest_descriptor =
        getDescriptor().getMessageTypes().get(14);
      internal_static_SettingQRRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_SettingQRRequest_descriptor,
          new String[] { "Content", });
      internal_static_SettingQRResponse_descriptor =
        getDescriptor().getMessageTypes().get(15);
      internal_static_SettingQRResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_SettingQRResponse_descriptor,
          new String[] { "StatusCode", });
      internal_static_SettingRateRequest_descriptor =
        getDescriptor().getMessageTypes().get(16);
      internal_static_SettingRateRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_SettingRateRequest_descriptor,
          new String[] { "Rate", });
      internal_static_SettingRateResponse_descriptor =
        getDescriptor().getMessageTypes().get(17);
      internal_static_SettingRateResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_SettingRateResponse_descriptor,
          new String[] { "StatusCode", });
      internal_static_RateQueryRequest_descriptor =
        getDescriptor().getMessageTypes().get(18);
      internal_static_RateQueryRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_RateQueryRequest_descriptor,
          new String[] { });
      internal_static_RateQueryResponse_descriptor =
        getDescriptor().getMessageTypes().get(19);
      internal_static_RateQueryResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_RateQueryResponse_descriptor,
          new String[] { "Rate", });
      internal_static_MonitoringRequest_descriptor =
        getDescriptor().getMessageTypes().get(20);
      internal_static_MonitoringRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MonitoringRequest_descriptor,
          new String[] { });
      internal_static_MonitoringResponse_descriptor =
        getDescriptor().getMessageTypes().get(21);
      internal_static_MonitoringResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MonitoringResponse_descriptor,
          new String[] { "DeviceInfo", "CarInfo", });
      internal_static_ControlRequest_descriptor =
        getDescriptor().getMessageTypes().get(22);
      internal_static_ControlRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ControlRequest_descriptor,
          new String[] { "Cmd", });
      internal_static_ControlResponse_descriptor =
        getDescriptor().getMessageTypes().get(23);
      internal_static_ControlResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ControlResponse_descriptor,
          new String[] { "StatusCode", "Cmd", });
      internal_static_UpgradeRequest_descriptor =
        getDescriptor().getMessageTypes().get(24);
      internal_static_UpgradeRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_UpgradeRequest_descriptor,
          new String[] { "Url", });
      internal_static_UpgradeResponse_descriptor =
        getDescriptor().getMessageTypes().get(25);
      internal_static_UpgradeResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_UpgradeResponse_descriptor,
          new String[] { "StatusCode", });
      internal_static_ReserveRequest_descriptor =
        getDescriptor().getMessageTypes().get(26);
      internal_static_ReserveRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ReserveRequest_descriptor,
          new String[] { "Date", "Order", });
      internal_static_ReserveResponse_descriptor =
        getDescriptor().getMessageTypes().get(27);
      internal_static_ReserveResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ReserveResponse_descriptor,
          new String[] { "StatusCode", "Order", });
      internal_static_ReserveCancelRequest_descriptor =
        getDescriptor().getMessageTypes().get(28);
      internal_static_ReserveCancelRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ReserveCancelRequest_descriptor,
          new String[] { "Order", });
      internal_static_ReserveCancelResponse_descriptor =
        getDescriptor().getMessageTypes().get(29);
      internal_static_ReserveCancelResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ReserveCancelResponse_descriptor,
          new String[] { "StatusCode", "Order", });
      internal_static_ReserveQueryRequest_descriptor =
        getDescriptor().getMessageTypes().get(30);
      internal_static_ReserveQueryRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ReserveQueryRequest_descriptor,
          new String[] { });
      internal_static_ReserveQueryResponse_descriptor =
        getDescriptor().getMessageTypes().get(31);
      internal_static_ReserveQueryResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ReserveQueryResponse_descriptor,
          new String[] { "Date", "Order", });
      internal_static_VerifyRequest_descriptor =
        getDescriptor().getMessageTypes().get(32);
      internal_static_VerifyRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_VerifyRequest_descriptor,
          new String[] { "Verify", "User", "Order", "OfflinePassword", });
      internal_static_VerifyResponse_descriptor =
        getDescriptor().getMessageTypes().get(33);
      internal_static_VerifyResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_VerifyResponse_descriptor,
          new String[] { "StatusCode", });
      internal_static_StartChargeRequest_descriptor =
        getDescriptor().getMessageTypes().get(34);
      internal_static_StartChargeRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_StartChargeRequest_descriptor,
          new String[] { "ChargeType", "ChargeData", });
      internal_static_StartChargeResponse_descriptor =
        getDescriptor().getMessageTypes().get(35);
      internal_static_StartChargeResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_StartChargeResponse_descriptor,
          new String[] { "StatusCode", });
      internal_static_StopChargeRequest_descriptor =
        getDescriptor().getMessageTypes().get(36);
      internal_static_StopChargeRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_StopChargeRequest_descriptor,
          new String[] { });
      internal_static_StopChargeResponse_descriptor =
        getDescriptor().getMessageTypes().get(37);
      internal_static_StopChargeResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_StopChargeResponse_descriptor,
          new String[] { "StatusCode", "Order", });
      internal_static_ChargeGunRequest_descriptor =
        getDescriptor().getMessageTypes().get(38);
      internal_static_ChargeGunRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ChargeGunRequest_descriptor,
          new String[] { "Status", });
      internal_static_ChargeGunResponse_descriptor =
        getDescriptor().getMessageTypes().get(39);
      internal_static_ChargeGunResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_ChargeGunResponse_descriptor,
          new String[] { "StatusCode", });
      internal_static_OrderRequest_descriptor =
        getDescriptor().getMessageTypes().get(40);
      internal_static_OrderRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_OrderRequest_descriptor,
          new String[] { "StartAt", "StopAt", "StartAmmeter", "StopAmmeter", "StartSOC", "StopSOC", "Duration", "ElectricQuantity", "User", "Order", "StopCause", });
      internal_static_OrderResponse_descriptor =
        getDescriptor().getMessageTypes().get(41);
      internal_static_OrderResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_OrderResponse_descriptor,
          new String[] { "StatusCode", "Order", });
      internal_static_OrderCancelRequest_descriptor =
        getDescriptor().getMessageTypes().get(42);
      internal_static_OrderCancelRequest_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_OrderCancelRequest_descriptor,
          new String[] { "StatusCode", });
      internal_static_OrderCancelResponse_descriptor =
        getDescriptor().getMessageTypes().get(43);
      internal_static_OrderCancelResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_OrderCancelResponse_descriptor,
          new String[] { "StatusCode", });
      internal_static_Acknowledgement_descriptor =
        getDescriptor().getMessageTypes().get(44);
      internal_static_Acknowledgement_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Acknowledgement_descriptor,
          new String[] { });
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  