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

package context;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code context.EventTypeEnum}
   */
  public enum EventTypeEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>EVENTTYPE_UNDEFINED = 0;</code>
     */
    EVENTTYPE_UNDEFINED(0),
    /**
     * <code>EVENTTYPE_CREATE = 1;</code>
     */
    EVENTTYPE_CREATE(1),
    /**
     * <code>EVENTTYPE_UPDATE = 2;</code>
     */
    EVENTTYPE_UPDATE(2),
    /**
     * <code>EVENTTYPE_REMOVE = 3;</code>
     */
    EVENTTYPE_REMOVE(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>EVENTTYPE_UNDEFINED = 0;</code>
     */
    public static final int EVENTTYPE_UNDEFINED_VALUE = 0;
    /**
     * <code>EVENTTYPE_CREATE = 1;</code>
     */
    public static final int EVENTTYPE_CREATE_VALUE = 1;
    /**
     * <code>EVENTTYPE_UPDATE = 2;</code>
     */
    public static final int EVENTTYPE_UPDATE_VALUE = 2;
    /**
     * <code>EVENTTYPE_REMOVE = 3;</code>
     */
    public static final int EVENTTYPE_REMOVE_VALUE = 3;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static EventTypeEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static EventTypeEnum forNumber(int value) {
      switch (value) {
        case 0: return EVENTTYPE_UNDEFINED;
        case 1: return EVENTTYPE_CREATE;
        case 2: return EVENTTYPE_UPDATE;
        case 3: return EVENTTYPE_REMOVE;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:context.EventTypeEnum)
  }

  /**
   * Protobuf enum {@code context.DeviceDriverEnum}
   */
  public enum DeviceDriverEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * also used for emulated
     * </pre>
     *
     * <code>DEVICEDRIVER_UNDEFINED = 0;</code>
     */
    DEVICEDRIVER_UNDEFINED(0),
    /**
     * <code>DEVICEDRIVER_OPENCONFIG = 1;</code>
     */
    DEVICEDRIVER_OPENCONFIG(1),
    /**
     * <code>DEVICEDRIVER_TRANSPORT_API = 2;</code>
     */
    DEVICEDRIVER_TRANSPORT_API(2),
    /**
     * <code>DEVICEDRIVER_P4 = 3;</code>
     */
    DEVICEDRIVER_P4(3),
    /**
     * <code>DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;</code>
     */
    DEVICEDRIVER_IETF_NETWORK_TOPOLOGY(4),
    /**
     * <code>DEVICEDRIVER_ONF_TR_352 = 5;</code>
     */
    DEVICEDRIVER_ONF_TR_352(5),
    /**
     * <code>DEVICEDRIVER_XR = 6;</code>
     */
    DEVICEDRIVER_XR(6),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * also used for emulated
     * </pre>
     *
     * <code>DEVICEDRIVER_UNDEFINED = 0;</code>
     */
    public static final int DEVICEDRIVER_UNDEFINED_VALUE = 0;
    /**
     * <code>DEVICEDRIVER_OPENCONFIG = 1;</code>
     */
    public static final int DEVICEDRIVER_OPENCONFIG_VALUE = 1;
    /**
     * <code>DEVICEDRIVER_TRANSPORT_API = 2;</code>
     */
    public static final int DEVICEDRIVER_TRANSPORT_API_VALUE = 2;
    /**
     * <code>DEVICEDRIVER_P4 = 3;</code>
     */
    public static final int DEVICEDRIVER_P4_VALUE = 3;
    /**
     * <code>DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;</code>
     */
    public static final int DEVICEDRIVER_IETF_NETWORK_TOPOLOGY_VALUE = 4;
    /**
     * <code>DEVICEDRIVER_ONF_TR_352 = 5;</code>
     */
    public static final int DEVICEDRIVER_ONF_TR_352_VALUE = 5;
    /**
     * <code>DEVICEDRIVER_XR = 6;</code>
     */
    public static final int DEVICEDRIVER_XR_VALUE = 6;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static DeviceDriverEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static DeviceDriverEnum forNumber(int value) {
      switch (value) {
        case 0: return DEVICEDRIVER_UNDEFINED;
        case 1: return DEVICEDRIVER_OPENCONFIG;
        case 2: return DEVICEDRIVER_TRANSPORT_API;
        case 3: return DEVICEDRIVER_P4;
        case 4: return DEVICEDRIVER_IETF_NETWORK_TOPOLOGY;
        case 5: return DEVICEDRIVER_ONF_TR_352;
        case 6: return DEVICEDRIVER_XR;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(1);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:context.DeviceDriverEnum)
  }

  /**
   * Protobuf enum {@code context.DeviceOperationalStatusEnum}
   */
  public enum DeviceOperationalStatusEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>DEVICEOPERATIONALSTATUS_UNDEFINED = 0;</code>
     */
    DEVICEOPERATIONALSTATUS_UNDEFINED(0),
    /**
     * <code>DEVICEOPERATIONALSTATUS_DISABLED = 1;</code>
     */
    DEVICEOPERATIONALSTATUS_DISABLED(1),
    /**
     * <code>DEVICEOPERATIONALSTATUS_ENABLED = 2;</code>
     */
    DEVICEOPERATIONALSTATUS_ENABLED(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>DEVICEOPERATIONALSTATUS_UNDEFINED = 0;</code>
     */
    public static final int DEVICEOPERATIONALSTATUS_UNDEFINED_VALUE = 0;
    /**
     * <code>DEVICEOPERATIONALSTATUS_DISABLED = 1;</code>
     */
    public static final int DEVICEOPERATIONALSTATUS_DISABLED_VALUE = 1;
    /**
     * <code>DEVICEOPERATIONALSTATUS_ENABLED = 2;</code>
     */
    public static final int DEVICEOPERATIONALSTATUS_ENABLED_VALUE = 2;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static DeviceOperationalStatusEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static DeviceOperationalStatusEnum forNumber(int value) {
      switch (value) {
        case 0: return DEVICEOPERATIONALSTATUS_UNDEFINED;
        case 1: return DEVICEOPERATIONALSTATUS_DISABLED;
        case 2: return DEVICEOPERATIONALSTATUS_ENABLED;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(2);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:context.DeviceOperationalStatusEnum)
  }

  /**
   * Protobuf enum {@code context.ServiceTypeEnum}
   */
  public enum ServiceTypeEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SERVICETYPE_UNKNOWN = 0;</code>
     */
    SERVICETYPE_UNKNOWN(0),
    /**
     * <code>SERVICETYPE_L3NM = 1;</code>
     */
    SERVICETYPE_L3NM(1),
    /**
     * <code>SERVICETYPE_L2NM = 2;</code>
     */
    SERVICETYPE_L2NM(2),
    /**
     * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
     */
    SERVICETYPE_TAPI_CONNECTIVITY_SERVICE(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SERVICETYPE_UNKNOWN = 0;</code>
     */
    public static final int SERVICETYPE_UNKNOWN_VALUE = 0;
    /**
     * <code>SERVICETYPE_L3NM = 1;</code>
     */
    public static final int SERVICETYPE_L3NM_VALUE = 1;
    /**
     * <code>SERVICETYPE_L2NM = 2;</code>
     */
    public static final int SERVICETYPE_L2NM_VALUE = 2;
    /**
     * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
     */
    public static final int SERVICETYPE_TAPI_CONNECTIVITY_SERVICE_VALUE = 3;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static ServiceTypeEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static ServiceTypeEnum forNumber(int value) {
      switch (value) {
        case 0: return SERVICETYPE_UNKNOWN;
        case 1: return SERVICETYPE_L3NM;
        case 2: return SERVICETYPE_L2NM;
        case 3: return SERVICETYPE_TAPI_CONNECTIVITY_SERVICE;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(3);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:context.ServiceTypeEnum)
  }

  /**
   * Protobuf enum {@code context.ServiceStatusEnum}
   */
  public enum ServiceStatusEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SERVICESTATUS_UNDEFINED = 0;</code>
     */
    SERVICESTATUS_UNDEFINED(0),
    /**
     * <code>SERVICESTATUS_PLANNED = 1;</code>
     */
    SERVICESTATUS_PLANNED(1),
    /**
     * <code>SERVICESTATUS_ACTIVE = 2;</code>
     */
    SERVICESTATUS_ACTIVE(2),
    /**
     * <code>SERVICESTATUS_PENDING_REMOVAL = 3;</code>
     */
    SERVICESTATUS_PENDING_REMOVAL(3),
    /**
     * <code>SERVICESTATUS_SLA_VIOLATED = 4;</code>
     */
    SERVICESTATUS_SLA_VIOLATED(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SERVICESTATUS_UNDEFINED = 0;</code>
     */
    public static final int SERVICESTATUS_UNDEFINED_VALUE = 0;
    /**
     * <code>SERVICESTATUS_PLANNED = 1;</code>
     */
    public static final int SERVICESTATUS_PLANNED_VALUE = 1;
    /**
     * <code>SERVICESTATUS_ACTIVE = 2;</code>
     */
    public static final int SERVICESTATUS_ACTIVE_VALUE = 2;
    /**
     * <code>SERVICESTATUS_PENDING_REMOVAL = 3;</code>
     */
    public static final int SERVICESTATUS_PENDING_REMOVAL_VALUE = 3;
    /**
     * <code>SERVICESTATUS_SLA_VIOLATED = 4;</code>
     */
    public static final int SERVICESTATUS_SLA_VIOLATED_VALUE = 4;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static ServiceStatusEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static ServiceStatusEnum forNumber(int value) {
      switch (value) {
        case 0: return SERVICESTATUS_UNDEFINED;
        case 1: return SERVICESTATUS_PLANNED;
        case 2: return SERVICESTATUS_ACTIVE;
        case 3: return SERVICESTATUS_PENDING_REMOVAL;
        case 4: return SERVICESTATUS_SLA_VIOLATED;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(4);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:context.ServiceStatusEnum)
  }

  /**
   * Protobuf enum {@code context.SliceStatusEnum}
   */
  public enum SliceStatusEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SLICESTATUS_UNDEFINED = 0;</code>
     */
    SLICESTATUS_UNDEFINED(0),
    /**
     * <code>SLICESTATUS_PLANNED = 1;</code>
     */
    SLICESTATUS_PLANNED(1),
    /**
     * <code>SLICESTATUS_INIT = 2;</code>
     */
    SLICESTATUS_INIT(2),
    /**
     * <code>SLICESTATUS_ACTIVE = 3;</code>
     */
    SLICESTATUS_ACTIVE(3),
    /**
     * <code>SLICESTATUS_DEINIT = 4;</code>
     */
    SLICESTATUS_DEINIT(4),
    /**
     * <code>SLICESTATUS_SLA_VIOLATED = 5;</code>
     */
    SLICESTATUS_SLA_VIOLATED(5),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SLICESTATUS_UNDEFINED = 0;</code>
     */
    public static final int SLICESTATUS_UNDEFINED_VALUE = 0;
    /**
     * <code>SLICESTATUS_PLANNED = 1;</code>
     */
    public static final int SLICESTATUS_PLANNED_VALUE = 1;
    /**
     * <code>SLICESTATUS_INIT = 2;</code>
     */
    public static final int SLICESTATUS_INIT_VALUE = 2;
    /**
     * <code>SLICESTATUS_ACTIVE = 3;</code>
     */
    public static final int SLICESTATUS_ACTIVE_VALUE = 3;
    /**
     * <code>SLICESTATUS_DEINIT = 4;</code>
     */
    public static final int SLICESTATUS_DEINIT_VALUE = 4;
    /**
     * <code>SLICESTATUS_SLA_VIOLATED = 5;</code>
     */
    public static final int SLICESTATUS_SLA_VIOLATED_VALUE = 5;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SliceStatusEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SliceStatusEnum forNumber(int value) {
      switch (value) {
        case 0: return SLICESTATUS_UNDEFINED;
        case 1: return SLICESTATUS_PLANNED;
        case 2: return SLICESTATUS_INIT;
        case 3: return SLICESTATUS_ACTIVE;
        case 4: return SLICESTATUS_DEINIT;
        case 5: return SLICESTATUS_SLA_VIOLATED;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(5);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:context.SliceStatusEnum)
  }

  /**
   * <pre>
   * ----- Configuration -------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf enum {@code context.ConfigActionEnum}
   */
  public enum ConfigActionEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>CONFIGACTION_UNDEFINED = 0;</code>
     */
    CONFIGACTION_UNDEFINED(0),
    /**
     * <code>CONFIGACTION_SET = 1;</code>
     */
    CONFIGACTION_SET(1),
    /**
     * <code>CONFIGACTION_DELETE = 2;</code>
     */
    CONFIGACTION_DELETE(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>CONFIGACTION_UNDEFINED = 0;</code>
     */
    public static final int CONFIGACTION_UNDEFINED_VALUE = 0;
    /**
     * <code>CONFIGACTION_SET = 1;</code>
     */
    public static final int CONFIGACTION_SET_VALUE = 1;
    /**
     * <code>CONFIGACTION_DELETE = 2;</code>
     */
    public static final int CONFIGACTION_DELETE_VALUE = 2;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static ConfigActionEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static ConfigActionEnum forNumber(int value) {
      switch (value) {
        case 0: return CONFIGACTION_UNDEFINED;
        case 1: return CONFIGACTION_SET;
        case 2: return CONFIGACTION_DELETE;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(6);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:context.ConfigActionEnum)
  }

  /**
   * Protobuf enum {@code context.IsolationLevelEnum}
   */
  public enum IsolationLevelEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>NO_ISOLATION = 0;</code>
     */
    NO_ISOLATION(0),
    /**
     * <code>PHYSICAL_ISOLATION = 1;</code>
     */
    PHYSICAL_ISOLATION(1),
    /**
     * <code>LOGICAL_ISOLATION = 2;</code>
     */
    LOGICAL_ISOLATION(2),
    /**
     * <code>PROCESS_ISOLATION = 3;</code>
     */
    PROCESS_ISOLATION(3),
    /**
     * <code>PHYSICAL_MEMORY_ISOLATION = 4;</code>
     */
    PHYSICAL_MEMORY_ISOLATION(4),
    /**
     * <code>PHYSICAL_NETWORK_ISOLATION = 5;</code>
     */
    PHYSICAL_NETWORK_ISOLATION(5),
    /**
     * <code>VIRTUAL_RESOURCE_ISOLATION = 6;</code>
     */
    VIRTUAL_RESOURCE_ISOLATION(6),
    /**
     * <code>NETWORK_FUNCTIONS_ISOLATION = 7;</code>
     */
    NETWORK_FUNCTIONS_ISOLATION(7),
    /**
     * <code>SERVICE_ISOLATION = 8;</code>
     */
    SERVICE_ISOLATION(8),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>NO_ISOLATION = 0;</code>
     */
    public static final int NO_ISOLATION_VALUE = 0;
    /**
     * <code>PHYSICAL_ISOLATION = 1;</code>
     */
    public static final int PHYSICAL_ISOLATION_VALUE = 1;
    /**
     * <code>LOGICAL_ISOLATION = 2;</code>
     */
    public static final int LOGICAL_ISOLATION_VALUE = 2;
    /**
     * <code>PROCESS_ISOLATION = 3;</code>
     */
    public static final int PROCESS_ISOLATION_VALUE = 3;
    /**
     * <code>PHYSICAL_MEMORY_ISOLATION = 4;</code>
     */
    public static final int PHYSICAL_MEMORY_ISOLATION_VALUE = 4;
    /**
     * <code>PHYSICAL_NETWORK_ISOLATION = 5;</code>
     */
    public static final int PHYSICAL_NETWORK_ISOLATION_VALUE = 5;
    /**
     * <code>VIRTUAL_RESOURCE_ISOLATION = 6;</code>
     */
    public static final int VIRTUAL_RESOURCE_ISOLATION_VALUE = 6;
    /**
     * <code>NETWORK_FUNCTIONS_ISOLATION = 7;</code>
     */
    public static final int NETWORK_FUNCTIONS_ISOLATION_VALUE = 7;
    /**
     * <code>SERVICE_ISOLATION = 8;</code>
     */
    public static final int SERVICE_ISOLATION_VALUE = 8;


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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static IsolationLevelEnum valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static IsolationLevelEnum forNumber(int value) {
      switch (value) {
        case 0: return NO_ISOLATION;
        case 1: return PHYSICAL_ISOLATION;
        case 2: return LOGICAL_ISOLATION;
        case 3: return PROCESS_ISOLATION;
        case 4: return PHYSICAL_MEMORY_ISOLATION;
        case 5: return PHYSICAL_NETWORK_ISOLATION;
        case 6: return VIRTUAL_RESOURCE_ISOLATION;
        case 7: return NETWORK_FUNCTIONS_ISOLATION;
        case 8: return SERVICE_ISOLATION;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(7);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:context.IsolationLevelEnum)
  }

  public interface EmptyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Empty)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * ----- Generic -------------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.Empty}
   */
  public static final class Empty extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Empty)
      EmptyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Empty.newBuilder() to construct.
    private Empty(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Empty() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Empty();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Empty(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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 context.ContextOuterClass.internal_static_context_Empty_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Empty_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Empty.class, context.ContextOuterClass.Empty.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

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

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Empty)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Empty other = (context.ContextOuterClass.Empty) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.Empty parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Empty parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Empty parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Empty parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Empty parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Empty parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Empty parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Empty 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 context.ContextOuterClass.Empty parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Empty 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 context.ContextOuterClass.Empty parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Empty parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Empty prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Generic -------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.Empty}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Empty)
        context.ContextOuterClass.EmptyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Empty_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Empty_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Empty.class, context.ContextOuterClass.Empty.Builder.class);
      }

      // Construct using context.ContextOuterClass.Empty.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Empty_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Empty getDefaultInstanceForType() {
        return context.ContextOuterClass.Empty.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Empty build() {
        context.ContextOuterClass.Empty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Empty buildPartial() {
        context.ContextOuterClass.Empty result = new context.ContextOuterClass.Empty(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Empty) {
          return mergeFrom((context.ContextOuterClass.Empty)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Empty other) {
        if (other == context.ContextOuterClass.Empty.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Empty parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Empty) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Empty)
    }

    // @@protoc_insertion_point(class_scope:context.Empty)
    private static final context.ContextOuterClass.Empty DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Empty();
    }

    public static context.ContextOuterClass.Empty getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Empty getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UuidOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Uuid)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string uuid = 1;</code>
     * @return The uuid.
     */
    java.lang.String getUuid();
    /**
     * <code>string uuid = 1;</code>
     * @return The bytes for uuid.
     */
    com.google.protobuf.ByteString
        getUuidBytes();
  }
  /**
   * Protobuf type {@code context.Uuid}
   */
  public static final class Uuid extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Uuid)
      UuidOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Uuid.newBuilder() to construct.
    private Uuid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Uuid() {
      uuid_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Uuid();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Uuid(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              uuid_ = s;
              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 context.ContextOuterClass.internal_static_context_Uuid_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Uuid_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Uuid.class, context.ContextOuterClass.Uuid.Builder.class);
    }

    public static final int UUID_FIELD_NUMBER = 1;
    private volatile java.lang.Object uuid_;
    /**
     * <code>string uuid = 1;</code>
     * @return The uuid.
     */
    @java.lang.Override
    public java.lang.String getUuid() {
      java.lang.Object ref = uuid_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        uuid_ = s;
        return s;
      }
    }
    /**
     * <code>string uuid = 1;</code>
     * @return The bytes for uuid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUuidBytes() {
      java.lang.Object ref = uuid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getUuidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getUuidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Uuid)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Uuid other = (context.ContextOuterClass.Uuid) obj;

      if (!getUuid()
          .equals(other.getUuid())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.Uuid parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Uuid parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Uuid parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Uuid parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Uuid parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Uuid parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Uuid parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Uuid 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 context.ContextOuterClass.Uuid parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Uuid 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 context.ContextOuterClass.Uuid parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Uuid parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Uuid prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Uuid}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Uuid)
        context.ContextOuterClass.UuidOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Uuid_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Uuid.class, context.ContextOuterClass.Uuid.Builder.class);
      }

      // Construct using context.ContextOuterClass.Uuid.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        uuid_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Uuid getDefaultInstanceForType() {
        return context.ContextOuterClass.Uuid.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Uuid build() {
        context.ContextOuterClass.Uuid result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Uuid buildPartial() {
        context.ContextOuterClass.Uuid result = new context.ContextOuterClass.Uuid(this);
        result.uuid_ = uuid_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Uuid) {
          return mergeFrom((context.ContextOuterClass.Uuid)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Uuid other) {
        if (other == context.ContextOuterClass.Uuid.getDefaultInstance()) return this;
        if (!other.getUuid().isEmpty()) {
          uuid_ = other.uuid_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Uuid parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Uuid) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object uuid_ = "";
      /**
       * <code>string uuid = 1;</code>
       * @return The uuid.
       */
      public java.lang.String getUuid() {
        java.lang.Object ref = uuid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          uuid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string uuid = 1;</code>
       * @return The bytes for uuid.
       */
      public com.google.protobuf.ByteString
          getUuidBytes() {
        java.lang.Object ref = uuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string uuid = 1;</code>
       * @param value The uuid to set.
       * @return This builder for chaining.
       */
      public Builder setUuid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        uuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string uuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUuid() {
        
        uuid_ = getDefaultInstance().getUuid();
        onChanged();
        return this;
      }
      /**
       * <code>string uuid = 1;</code>
       * @param value The bytes for uuid to set.
       * @return This builder for chaining.
       */
      public Builder setUuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        uuid_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Uuid)
    }

    // @@protoc_insertion_point(class_scope:context.Uuid)
    private static final context.ContextOuterClass.Uuid DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Uuid();
    }

    public static context.ContextOuterClass.Uuid getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Uuid getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TimestampOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Timestamp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>double timestamp = 1;</code>
     * @return The timestamp.
     */
    double getTimestamp();
  }
  /**
   * Protobuf type {@code context.Timestamp}
   */
  public static final class Timestamp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Timestamp)
      TimestampOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Timestamp.newBuilder() to construct.
    private Timestamp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Timestamp() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Timestamp();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Timestamp(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 9: {

              timestamp_ = input.readDouble();
              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 context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Timestamp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Timestamp.class, context.ContextOuterClass.Timestamp.Builder.class);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 1;
    private double timestamp_;
    /**
     * <code>double timestamp = 1;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public double getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (timestamp_ != 0D) {
        output.writeDouble(1, timestamp_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (timestamp_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, timestamp_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Timestamp)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Timestamp other = (context.ContextOuterClass.Timestamp) obj;

      if (java.lang.Double.doubleToLongBits(getTimestamp())
          != java.lang.Double.doubleToLongBits(
              other.getTimestamp())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getTimestamp()));
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Timestamp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Timestamp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Timestamp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Timestamp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Timestamp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Timestamp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Timestamp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Timestamp 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 context.ContextOuterClass.Timestamp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Timestamp 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 context.ContextOuterClass.Timestamp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Timestamp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Timestamp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Timestamp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Timestamp)
        context.ContextOuterClass.TimestampOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Timestamp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Timestamp.class, context.ContextOuterClass.Timestamp.Builder.class);
      }

      // Construct using context.ContextOuterClass.Timestamp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        timestamp_ = 0D;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Timestamp getDefaultInstanceForType() {
        return context.ContextOuterClass.Timestamp.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Timestamp build() {
        context.ContextOuterClass.Timestamp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Timestamp buildPartial() {
        context.ContextOuterClass.Timestamp result = new context.ContextOuterClass.Timestamp(this);
        result.timestamp_ = timestamp_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Timestamp) {
          return mergeFrom((context.ContextOuterClass.Timestamp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Timestamp other) {
        if (other == context.ContextOuterClass.Timestamp.getDefaultInstance()) return this;
        if (other.getTimestamp() != 0D) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Timestamp parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Timestamp) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private double timestamp_ ;
      /**
       * <code>double timestamp = 1;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public double getTimestamp() {
        return timestamp_;
      }
      /**
       * <code>double timestamp = 1;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(double value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double timestamp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Timestamp)
    }

    // @@protoc_insertion_point(class_scope:context.Timestamp)
    private static final context.ContextOuterClass.Timestamp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Timestamp();
    }

    public static context.ContextOuterClass.Timestamp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Timestamp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Event)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Timestamp timestamp = 1;</code>
     * @return Whether the timestamp field is set.
     */
    boolean hasTimestamp();
    /**
     * <code>.context.Timestamp timestamp = 1;</code>
     * @return The timestamp.
     */
    context.ContextOuterClass.Timestamp getTimestamp();
    /**
     * <code>.context.Timestamp timestamp = 1;</code>
     */
    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();

    /**
     * <code>.context.EventTypeEnum event_type = 2;</code>
     * @return The enum numeric value on the wire for eventType.
     */
    int getEventTypeValue();
    /**
     * <code>.context.EventTypeEnum event_type = 2;</code>
     * @return The eventType.
     */
    context.ContextOuterClass.EventTypeEnum getEventType();
  }
  /**
   * Protobuf type {@code context.Event}
   */
  public static final class Event extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Event)
      EventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Event.newBuilder() to construct.
    private Event(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Event() {
      eventType_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Event();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Event(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
              if (timestamp_ != null) {
                subBuilder = timestamp_.toBuilder();
              }
              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(timestamp_);
                timestamp_ = subBuilder.buildPartial();
              }

              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              eventType_ = rawValue;
              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 context.ContextOuterClass.internal_static_context_Event_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Event_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Event.class, context.ContextOuterClass.Event.Builder.class);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Timestamp timestamp_;
    /**
     * <code>.context.Timestamp timestamp = 1;</code>
     * @return Whether the timestamp field is set.
     */
    @java.lang.Override
    public boolean hasTimestamp() {
      return timestamp_ != null;
    }
    /**
     * <code>.context.Timestamp timestamp = 1;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public context.ContextOuterClass.Timestamp getTimestamp() {
      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
    }
    /**
     * <code>.context.Timestamp timestamp = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
      return getTimestamp();
    }

    public static final int EVENT_TYPE_FIELD_NUMBER = 2;
    private int eventType_;
    /**
     * <code>.context.EventTypeEnum event_type = 2;</code>
     * @return The enum numeric value on the wire for eventType.
     */
    @java.lang.Override public int getEventTypeValue() {
      return eventType_;
    }
    /**
     * <code>.context.EventTypeEnum event_type = 2;</code>
     * @return The eventType.
     */
    @java.lang.Override public context.ContextOuterClass.EventTypeEnum getEventType() {
      @SuppressWarnings("deprecation")
      context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_);
      return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (timestamp_ != null) {
        output.writeMessage(1, getTimestamp());
      }
      if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
        output.writeEnum(2, eventType_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (timestamp_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTimestamp());
      }
      if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, eventType_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Event)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Event other = (context.ContextOuterClass.Event) obj;

      if (hasTimestamp() != other.hasTimestamp()) return false;
      if (hasTimestamp()) {
        if (!getTimestamp()
            .equals(other.getTimestamp())) return false;
      }
      if (eventType_ != other.eventType_) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTimestamp()) {
        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getTimestamp().hashCode();
      }
      hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + eventType_;
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Event parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Event parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Event parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Event parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Event parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Event parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Event parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Event 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 context.ContextOuterClass.Event parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Event 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 context.ContextOuterClass.Event parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Event parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Event prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Event}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Event)
        context.ContextOuterClass.EventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Event_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Event_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Event.class, context.ContextOuterClass.Event.Builder.class);
      }

      // Construct using context.ContextOuterClass.Event.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (timestampBuilder_ == null) {
          timestamp_ = null;
        } else {
          timestamp_ = null;
          timestampBuilder_ = null;
        }
        eventType_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Event_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Event getDefaultInstanceForType() {
        return context.ContextOuterClass.Event.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Event build() {
        context.ContextOuterClass.Event result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Event buildPartial() {
        context.ContextOuterClass.Event result = new context.ContextOuterClass.Event(this);
        if (timestampBuilder_ == null) {
          result.timestamp_ = timestamp_;
        } else {
          result.timestamp_ = timestampBuilder_.build();
        }
        result.eventType_ = eventType_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Event) {
          return mergeFrom((context.ContextOuterClass.Event)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Event other) {
        if (other == context.ContextOuterClass.Event.getDefaultInstance()) return this;
        if (other.hasTimestamp()) {
          mergeTimestamp(other.getTimestamp());
        }
        if (other.eventType_ != 0) {
          setEventTypeValue(other.getEventTypeValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Event parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Event) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Timestamp timestamp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       * @return Whether the timestamp field is set.
       */
      public boolean hasTimestamp() {
        return timestampBuilder_ != null || timestamp_ != null;
      }
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       * @return The timestamp.
       */
      public context.ContextOuterClass.Timestamp getTimestamp() {
        if (timestampBuilder_ == null) {
          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        } else {
          return timestampBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       */
      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
        if (timestampBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timestamp_ = value;
          onChanged();
        } else {
          timestampBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       */
      public Builder setTimestamp(
          context.ContextOuterClass.Timestamp.Builder builderForValue) {
        if (timestampBuilder_ == null) {
          timestamp_ = builderForValue.build();
          onChanged();
        } else {
          timestampBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       */
      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
        if (timestampBuilder_ == null) {
          if (timestamp_ != null) {
            timestamp_ =
              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
          } else {
            timestamp_ = value;
          }
          onChanged();
        } else {
          timestampBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       */
      public Builder clearTimestamp() {
        if (timestampBuilder_ == null) {
          timestamp_ = null;
          onChanged();
        } else {
          timestamp_ = null;
          timestampBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       */
      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
        
        onChanged();
        return getTimestampFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       */
      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
        if (timestampBuilder_ != null) {
          return timestampBuilder_.getMessageOrBuilder();
        } else {
          return timestamp_ == null ?
              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }
      }
      /**
       * <code>.context.Timestamp timestamp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
          getTimestampFieldBuilder() {
        if (timestampBuilder_ == null) {
          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
                  getTimestamp(),
                  getParentForChildren(),
                  isClean());
          timestamp_ = null;
        }
        return timestampBuilder_;
      }

      private int eventType_ = 0;
      /**
       * <code>.context.EventTypeEnum event_type = 2;</code>
       * @return The enum numeric value on the wire for eventType.
       */
      @java.lang.Override public int getEventTypeValue() {
        return eventType_;
      }
      /**
       * <code>.context.EventTypeEnum event_type = 2;</code>
       * @param value The enum numeric value on the wire for eventType to set.
       * @return This builder for chaining.
       */
      public Builder setEventTypeValue(int value) {
        
        eventType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.context.EventTypeEnum event_type = 2;</code>
       * @return The eventType.
       */
      @java.lang.Override
      public context.ContextOuterClass.EventTypeEnum getEventType() {
        @SuppressWarnings("deprecation")
        context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_);
        return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
      }
      /**
       * <code>.context.EventTypeEnum event_type = 2;</code>
       * @param value The eventType to set.
       * @return This builder for chaining.
       */
      public Builder setEventType(context.ContextOuterClass.EventTypeEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        eventType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.context.EventTypeEnum event_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventType() {
        
        eventType_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Event)
    }

    // @@protoc_insertion_point(class_scope:context.Event)
    private static final context.ContextOuterClass.Event DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Event();
    }

    public static context.ContextOuterClass.Event getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Event getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ContextIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ContextId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Uuid context_uuid = 1;</code>
     * @return Whether the contextUuid field is set.
     */
    boolean hasContextUuid();
    /**
     * <code>.context.Uuid context_uuid = 1;</code>
     * @return The contextUuid.
     */
    context.ContextOuterClass.Uuid getContextUuid();
    /**
     * <code>.context.Uuid context_uuid = 1;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder();
  }
  /**
   * <pre>
   * ----- Context -------------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.ContextId}
   */
  public static final class ContextId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ContextId)
      ContextIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ContextId.newBuilder() to construct.
    private ContextId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ContextId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ContextId();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ContextId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (contextUuid_ != null) {
                subBuilder = contextUuid_.toBuilder();
              }
              contextUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contextUuid_);
                contextUuid_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_ContextId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ContextId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ContextId.class, context.ContextOuterClass.ContextId.Builder.class);
    }

    public static final int CONTEXT_UUID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Uuid contextUuid_;
    /**
     * <code>.context.Uuid context_uuid = 1;</code>
     * @return Whether the contextUuid field is set.
     */
    @java.lang.Override
    public boolean hasContextUuid() {
      return contextUuid_ != null;
    }
    /**
     * <code>.context.Uuid context_uuid = 1;</code>
     * @return The contextUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getContextUuid() {
      return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
    }
    /**
     * <code>.context.Uuid context_uuid = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
      return getContextUuid();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (contextUuid_ != null) {
        output.writeMessage(1, getContextUuid());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (contextUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getContextUuid());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ContextId)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ContextId other = (context.ContextOuterClass.ContextId) obj;

      if (hasContextUuid() != other.hasContextUuid()) return false;
      if (hasContextUuid()) {
        if (!getContextUuid()
            .equals(other.getContextUuid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ContextId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextId 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 context.ContextOuterClass.ContextId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextId 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 context.ContextOuterClass.ContextId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ContextId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Context -------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.ContextId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ContextId)
        context.ContextOuterClass.ContextIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ContextId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ContextId.class, context.ContextOuterClass.ContextId.Builder.class);
      }

      // Construct using context.ContextOuterClass.ContextId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextUuidBuilder_ == null) {
          contextUuid_ = null;
        } else {
          contextUuid_ = null;
          contextUuidBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextId getDefaultInstanceForType() {
        return context.ContextOuterClass.ContextId.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextId build() {
        context.ContextOuterClass.ContextId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextId buildPartial() {
        context.ContextOuterClass.ContextId result = new context.ContextOuterClass.ContextId(this);
        if (contextUuidBuilder_ == null) {
          result.contextUuid_ = contextUuid_;
        } else {
          result.contextUuid_ = contextUuidBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ContextId) {
          return mergeFrom((context.ContextOuterClass.ContextId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ContextId other) {
        if (other == context.ContextOuterClass.ContextId.getDefaultInstance()) return this;
        if (other.hasContextUuid()) {
          mergeContextUuid(other.getContextUuid());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ContextId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ContextId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Uuid contextUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> contextUuidBuilder_;
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       * @return Whether the contextUuid field is set.
       */
      public boolean hasContextUuid() {
        return contextUuidBuilder_ != null || contextUuid_ != null;
      }
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       * @return The contextUuid.
       */
      public context.ContextOuterClass.Uuid getContextUuid() {
        if (contextUuidBuilder_ == null) {
          return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
        } else {
          return contextUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       */
      public Builder setContextUuid(context.ContextOuterClass.Uuid value) {
        if (contextUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextUuid_ = value;
          onChanged();
        } else {
          contextUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       */
      public Builder setContextUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (contextUuidBuilder_ == null) {
          contextUuid_ = builderForValue.build();
          onChanged();
        } else {
          contextUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       */
      public Builder mergeContextUuid(context.ContextOuterClass.Uuid value) {
        if (contextUuidBuilder_ == null) {
          if (contextUuid_ != null) {
            contextUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(contextUuid_).mergeFrom(value).buildPartial();
          } else {
            contextUuid_ = value;
          }
          onChanged();
        } else {
          contextUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       */
      public Builder clearContextUuid() {
        if (contextUuidBuilder_ == null) {
          contextUuid_ = null;
          onChanged();
        } else {
          contextUuid_ = null;
          contextUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getContextUuidBuilder() {
        
        onChanged();
        return getContextUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
        if (contextUuidBuilder_ != null) {
          return contextUuidBuilder_.getMessageOrBuilder();
        } else {
          return contextUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
        }
      }
      /**
       * <code>.context.Uuid context_uuid = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getContextUuidFieldBuilder() {
        if (contextUuidBuilder_ == null) {
          contextUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getContextUuid(),
                  getParentForChildren(),
                  isClean());
          contextUuid_ = null;
        }
        return contextUuidBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ContextId)
    }

    // @@protoc_insertion_point(class_scope:context.ContextId)
    private static final context.ContextOuterClass.ContextId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ContextId();
    }

    public static context.ContextOuterClass.ContextId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ContextId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ContextOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Context)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    boolean hasContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    context.ContextOuterClass.ContextId getContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    java.util.List<context.ContextOuterClass.TopologyId> 
        getTopologyIdsList();
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    context.ContextOuterClass.TopologyId getTopologyIds(int index);
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    int getTopologyIdsCount();
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
        getTopologyIdsOrBuilderList();
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
        int index);

    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    java.util.List<context.ContextOuterClass.ServiceId> 
        getServiceIdsList();
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    context.ContextOuterClass.ServiceId getServiceIds(int index);
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    int getServiceIdsCount();
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
        getServiceIdsOrBuilderList();
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
        int index);

    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    java.util.List<context.ContextOuterClass.SliceId> 
        getSliceIdsList();
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    context.ContextOuterClass.SliceId getSliceIds(int index);
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    int getSliceIdsCount();
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
        getSliceIdsOrBuilderList();
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
        int index);

    /**
     * <code>.context.TeraFlowController controller = 6;</code>
     * @return Whether the controller field is set.
     */
    boolean hasController();
    /**
     * <code>.context.TeraFlowController controller = 6;</code>
     * @return The controller.
     */
    context.ContextOuterClass.TeraFlowController getController();
    /**
     * <code>.context.TeraFlowController controller = 6;</code>
     */
    context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder();
  }
  /**
   * Protobuf type {@code context.Context}
   */
  public static final class Context extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Context)
      ContextOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Context.newBuilder() to construct.
    private Context(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Context() {
      name_ = "";
      topologyIds_ = java.util.Collections.emptyList();
      serviceIds_ = java.util.Collections.emptyList();
      sliceIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Context();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Context(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ContextId.Builder subBuilder = null;
              if (contextId_ != null) {
                subBuilder = contextId_.toBuilder();
              }
              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contextId_);
                contextId_ = subBuilder.buildPartial();
              }

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

              name_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
                mutable_bitField0_ |= 0x00000001;
              }
              topologyIds_.add(
                  input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
                mutable_bitField0_ |= 0x00000002;
              }
              serviceIds_.add(
                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
                mutable_bitField0_ |= 0x00000004;
              }
              sliceIds_.add(
                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
              break;
            }
            case 50: {
              context.ContextOuterClass.TeraFlowController.Builder subBuilder = null;
              if (controller_ != null) {
                subBuilder = controller_.toBuilder();
              }
              controller_ = input.readMessage(context.ContextOuterClass.TeraFlowController.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(controller_);
                controller_ = subBuilder.buildPartial();
              }

              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
        }
        if (((mutable_bitField0_ & 0x00000004) != 0)) {
          sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Context_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Context_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Context.class, context.ContextOuterClass.Context.Builder.class);
    }

    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ContextId contextId_;
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    @java.lang.Override
    public boolean hasContextId() {
      return contextId_ != null;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextId getContextId() {
      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
      return getContextId();
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TOPOLOGY_IDS_FIELD_NUMBER = 3;
    private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
      return topologyIds_;
    }
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
        getTopologyIdsOrBuilderList() {
      return topologyIds_;
    }
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    @java.lang.Override
    public int getTopologyIdsCount() {
      return topologyIds_.size();
    }
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
      return topologyIds_.get(index);
    }
    /**
     * <code>repeated .context.TopologyId topology_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
        int index) {
      return topologyIds_.get(index);
    }

    public static final int SERVICE_IDS_FIELD_NUMBER = 4;
    private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
      return serviceIds_;
    }
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
        getServiceIdsOrBuilderList() {
      return serviceIds_;
    }
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    @java.lang.Override
    public int getServiceIdsCount() {
      return serviceIds_.size();
    }
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceId getServiceIds(int index) {
      return serviceIds_.get(index);
    }
    /**
     * <code>repeated .context.ServiceId service_ids = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
        int index) {
      return serviceIds_.get(index);
    }

    public static final int SLICE_IDS_FIELD_NUMBER = 5;
    private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
      return sliceIds_;
    }
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
        getSliceIdsOrBuilderList() {
      return sliceIds_;
    }
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    @java.lang.Override
    public int getSliceIdsCount() {
      return sliceIds_.size();
    }
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceId getSliceIds(int index) {
      return sliceIds_.get(index);
    }
    /**
     * <code>repeated .context.SliceId slice_ids = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
        int index) {
      return sliceIds_.get(index);
    }

    public static final int CONTROLLER_FIELD_NUMBER = 6;
    private context.ContextOuterClass.TeraFlowController controller_;
    /**
     * <code>.context.TeraFlowController controller = 6;</code>
     * @return Whether the controller field is set.
     */
    @java.lang.Override
    public boolean hasController() {
      return controller_ != null;
    }
    /**
     * <code>.context.TeraFlowController controller = 6;</code>
     * @return The controller.
     */
    @java.lang.Override
    public context.ContextOuterClass.TeraFlowController getController() {
      return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
    }
    /**
     * <code>.context.TeraFlowController controller = 6;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
      return getController();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (contextId_ != null) {
        output.writeMessage(1, getContextId());
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      for (int i = 0; i < topologyIds_.size(); i++) {
        output.writeMessage(3, topologyIds_.get(i));
      }
      for (int i = 0; i < serviceIds_.size(); i++) {
        output.writeMessage(4, serviceIds_.get(i));
      }
      for (int i = 0; i < sliceIds_.size(); i++) {
        output.writeMessage(5, sliceIds_.get(i));
      }
      if (controller_ != null) {
        output.writeMessage(6, getController());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (contextId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getContextId());
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      for (int i = 0; i < topologyIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, topologyIds_.get(i));
      }
      for (int i = 0; i < serviceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, serviceIds_.get(i));
      }
      for (int i = 0; i < sliceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, sliceIds_.get(i));
      }
      if (controller_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getController());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Context)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Context other = (context.ContextOuterClass.Context) obj;

      if (hasContextId() != other.hasContextId()) return false;
      if (hasContextId()) {
        if (!getContextId()
            .equals(other.getContextId())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (!getTopologyIdsList()
          .equals(other.getTopologyIdsList())) return false;
      if (!getServiceIdsList()
          .equals(other.getServiceIdsList())) return false;
      if (!getSliceIdsList()
          .equals(other.getSliceIdsList())) return false;
      if (hasController() != other.hasController()) return false;
      if (hasController()) {
        if (!getController()
            .equals(other.getController())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasContextId()) {
        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getContextId().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getTopologyIdsCount() > 0) {
        hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getTopologyIdsList().hashCode();
      }
      if (getServiceIdsCount() > 0) {
        hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getServiceIdsList().hashCode();
      }
      if (getSliceIdsCount() > 0) {
        hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getSliceIdsList().hashCode();
      }
      if (hasController()) {
        hash = (37 * hash) + CONTROLLER_FIELD_NUMBER;
        hash = (53 * hash) + getController().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Context parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Context parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Context parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Context parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Context parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Context parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Context parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Context 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 context.ContextOuterClass.Context parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Context 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 context.ContextOuterClass.Context parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Context parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Context prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Context}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Context)
        context.ContextOuterClass.ContextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Context_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Context_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Context.class, context.ContextOuterClass.Context.Builder.class);
      }

      // Construct using context.ContextOuterClass.Context.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTopologyIdsFieldBuilder();
          getServiceIdsFieldBuilder();
          getSliceIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextIdBuilder_ == null) {
          contextId_ = null;
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }
        name_ = "";

        if (topologyIdsBuilder_ == null) {
          topologyIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          topologyIdsBuilder_.clear();
        }
        if (serviceIdsBuilder_ == null) {
          serviceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          serviceIdsBuilder_.clear();
        }
        if (sliceIdsBuilder_ == null) {
          sliceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          sliceIdsBuilder_.clear();
        }
        if (controllerBuilder_ == null) {
          controller_ = null;
        } else {
          controller_ = null;
          controllerBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Context_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Context getDefaultInstanceForType() {
        return context.ContextOuterClass.Context.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Context build() {
        context.ContextOuterClass.Context result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Context buildPartial() {
        context.ContextOuterClass.Context result = new context.ContextOuterClass.Context(this);
        int from_bitField0_ = bitField0_;
        if (contextIdBuilder_ == null) {
          result.contextId_ = contextId_;
        } else {
          result.contextId_ = contextIdBuilder_.build();
        }
        result.name_ = name_;
        if (topologyIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.topologyIds_ = topologyIds_;
        } else {
          result.topologyIds_ = topologyIdsBuilder_.build();
        }
        if (serviceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.serviceIds_ = serviceIds_;
        } else {
          result.serviceIds_ = serviceIdsBuilder_.build();
        }
        if (sliceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.sliceIds_ = sliceIds_;
        } else {
          result.sliceIds_ = sliceIdsBuilder_.build();
        }
        if (controllerBuilder_ == null) {
          result.controller_ = controller_;
        } else {
          result.controller_ = controllerBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Context) {
          return mergeFrom((context.ContextOuterClass.Context)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Context other) {
        if (other == context.ContextOuterClass.Context.getDefaultInstance()) return this;
        if (other.hasContextId()) {
          mergeContextId(other.getContextId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (topologyIdsBuilder_ == null) {
          if (!other.topologyIds_.isEmpty()) {
            if (topologyIds_.isEmpty()) {
              topologyIds_ = other.topologyIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTopologyIdsIsMutable();
              topologyIds_.addAll(other.topologyIds_);
            }
            onChanged();
          }
        } else {
          if (!other.topologyIds_.isEmpty()) {
            if (topologyIdsBuilder_.isEmpty()) {
              topologyIdsBuilder_.dispose();
              topologyIdsBuilder_ = null;
              topologyIds_ = other.topologyIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              topologyIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTopologyIdsFieldBuilder() : null;
            } else {
              topologyIdsBuilder_.addAllMessages(other.topologyIds_);
            }
          }
        }
        if (serviceIdsBuilder_ == null) {
          if (!other.serviceIds_.isEmpty()) {
            if (serviceIds_.isEmpty()) {
              serviceIds_ = other.serviceIds_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureServiceIdsIsMutable();
              serviceIds_.addAll(other.serviceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.serviceIds_.isEmpty()) {
            if (serviceIdsBuilder_.isEmpty()) {
              serviceIdsBuilder_.dispose();
              serviceIdsBuilder_ = null;
              serviceIds_ = other.serviceIds_;
              bitField0_ = (bitField0_ & ~0x00000002);
              serviceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServiceIdsFieldBuilder() : null;
            } else {
              serviceIdsBuilder_.addAllMessages(other.serviceIds_);
            }
          }
        }
        if (sliceIdsBuilder_ == null) {
          if (!other.sliceIds_.isEmpty()) {
            if (sliceIds_.isEmpty()) {
              sliceIds_ = other.sliceIds_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureSliceIdsIsMutable();
              sliceIds_.addAll(other.sliceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.sliceIds_.isEmpty()) {
            if (sliceIdsBuilder_.isEmpty()) {
              sliceIdsBuilder_.dispose();
              sliceIdsBuilder_ = null;
              sliceIds_ = other.sliceIds_;
              bitField0_ = (bitField0_ & ~0x00000004);
              sliceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSliceIdsFieldBuilder() : null;
            } else {
              sliceIdsBuilder_.addAllMessages(other.sliceIds_);
            }
          }
        }
        if (other.hasController()) {
          mergeController(other.getController());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Context parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Context) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.ContextId contextId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return Whether the contextId field is set.
       */
      public boolean hasContextId() {
        return contextIdBuilder_ != null || contextId_ != null;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return The contextId.
       */
      public context.ContextOuterClass.ContextId getContextId() {
        if (contextIdBuilder_ == null) {
          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        } else {
          return contextIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextId_ = value;
          onChanged();
        } else {
          contextIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(
          context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdBuilder_ == null) {
          contextId_ = builderForValue.build();
          onChanged();
        } else {
          contextIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (contextId_ != null) {
            contextId_ =
              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
          } else {
            contextId_ = value;
          }
          onChanged();
        } else {
          contextIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder clearContextId() {
        if (contextIdBuilder_ == null) {
          contextId_ = null;
          onChanged();
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
        
        onChanged();
        return getContextIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
        if (contextIdBuilder_ != null) {
          return contextIdBuilder_.getMessageOrBuilder();
        } else {
          return contextId_ == null ?
              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
          getContextIdFieldBuilder() {
        if (contextIdBuilder_ == null) {
          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
                  getContextId(),
                  getParentForChildren(),
                  isClean());
          contextId_ = null;
        }
        return contextIdBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ =
        java.util.Collections.emptyList();
      private void ensureTopologyIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;

      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
        if (topologyIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(topologyIds_);
        } else {
          return topologyIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public int getTopologyIdsCount() {
        if (topologyIdsBuilder_ == null) {
          return topologyIds_.size();
        } else {
          return topologyIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
        if (topologyIdsBuilder_ == null) {
          return topologyIds_.get(index);
        } else {
          return topologyIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder setTopologyIds(
          int index, context.ContextOuterClass.TopologyId value) {
        if (topologyIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologyIdsIsMutable();
          topologyIds_.set(index, value);
          onChanged();
        } else {
          topologyIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder setTopologyIds(
          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          topologyIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          topologyIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
        if (topologyIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologyIdsIsMutable();
          topologyIds_.add(value);
          onChanged();
        } else {
          topologyIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder addTopologyIds(
          int index, context.ContextOuterClass.TopologyId value) {
        if (topologyIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologyIdsIsMutable();
          topologyIds_.add(index, value);
          onChanged();
        } else {
          topologyIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder addTopologyIds(
          context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          topologyIds_.add(builderForValue.build());
          onChanged();
        } else {
          topologyIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder addTopologyIds(
          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          topologyIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          topologyIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder addAllTopologyIds(
          java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, topologyIds_);
          onChanged();
        } else {
          topologyIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder clearTopologyIds() {
        if (topologyIdsBuilder_ == null) {
          topologyIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          topologyIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public Builder removeTopologyIds(int index) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          topologyIds_.remove(index);
          onChanged();
        } else {
          topologyIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(
          int index) {
        return getTopologyIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
          int index) {
        if (topologyIdsBuilder_ == null) {
          return topologyIds_.get(index);  } else {
          return topologyIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
           getTopologyIdsOrBuilderList() {
        if (topologyIdsBuilder_ != null) {
          return topologyIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(topologyIds_);
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
        return getTopologyIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.TopologyId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(
          int index) {
        return getTopologyIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.TopologyId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.TopologyId.Builder> 
           getTopologyIdsBuilderList() {
        return getTopologyIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
          getTopologyIdsFieldBuilder() {
        if (topologyIdsBuilder_ == null) {
          topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
                  topologyIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          topologyIds_ = null;
        }
        return topologyIdsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ =
        java.util.Collections.emptyList();
      private void ensureServiceIdsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;

      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
        if (serviceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(serviceIds_);
        } else {
          return serviceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public int getServiceIdsCount() {
        if (serviceIdsBuilder_ == null) {
          return serviceIds_.size();
        } else {
          return serviceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceId getServiceIds(int index) {
        if (serviceIdsBuilder_ == null) {
          return serviceIds_.get(index);
        } else {
          return serviceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder setServiceIds(
          int index, context.ContextOuterClass.ServiceId value) {
        if (serviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIdsIsMutable();
          serviceIds_.set(index, value);
          onChanged();
        } else {
          serviceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder setServiceIds(
          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          serviceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          serviceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
        if (serviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIdsIsMutable();
          serviceIds_.add(value);
          onChanged();
        } else {
          serviceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder addServiceIds(
          int index, context.ContextOuterClass.ServiceId value) {
        if (serviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIdsIsMutable();
          serviceIds_.add(index, value);
          onChanged();
        } else {
          serviceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder addServiceIds(
          context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          serviceIds_.add(builderForValue.build());
          onChanged();
        } else {
          serviceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder addServiceIds(
          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          serviceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          serviceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder addAllServiceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, serviceIds_);
          onChanged();
        } else {
          serviceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder clearServiceIds() {
        if (serviceIdsBuilder_ == null) {
          serviceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          serviceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public Builder removeServiceIds(int index) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          serviceIds_.remove(index);
          onChanged();
        } else {
          serviceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(
          int index) {
        return getServiceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
          int index) {
        if (serviceIdsBuilder_ == null) {
          return serviceIds_.get(index);  } else {
          return serviceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
           getServiceIdsOrBuilderList() {
        if (serviceIdsBuilder_ != null) {
          return serviceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(serviceIds_);
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
        return getServiceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.ServiceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(
          int index) {
        return getServiceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
           getServiceIdsBuilderList() {
        return getServiceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
          getServiceIdsFieldBuilder() {
        if (serviceIdsBuilder_ == null) {
          serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
                  serviceIds_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          serviceIds_ = null;
        }
        return serviceIdsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ =
        java.util.Collections.emptyList();
      private void ensureSliceIdsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;

      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
        if (sliceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sliceIds_);
        } else {
          return sliceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public int getSliceIdsCount() {
        if (sliceIdsBuilder_ == null) {
          return sliceIds_.size();
        } else {
          return sliceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public context.ContextOuterClass.SliceId getSliceIds(int index) {
        if (sliceIdsBuilder_ == null) {
          return sliceIds_.get(index);
        } else {
          return sliceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder setSliceIds(
          int index, context.ContextOuterClass.SliceId value) {
        if (sliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceIdsIsMutable();
          sliceIds_.set(index, value);
          onChanged();
        } else {
          sliceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder setSliceIds(
          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          sliceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          sliceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
        if (sliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceIdsIsMutable();
          sliceIds_.add(value);
          onChanged();
        } else {
          sliceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder addSliceIds(
          int index, context.ContextOuterClass.SliceId value) {
        if (sliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceIdsIsMutable();
          sliceIds_.add(index, value);
          onChanged();
        } else {
          sliceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder addSliceIds(
          context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          sliceIds_.add(builderForValue.build());
          onChanged();
        } else {
          sliceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder addSliceIds(
          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          sliceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          sliceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder addAllSliceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sliceIds_);
          onChanged();
        } else {
          sliceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder clearSliceIds() {
        if (sliceIdsBuilder_ == null) {
          sliceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          sliceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public Builder removeSliceIds(int index) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          sliceIds_.remove(index);
          onChanged();
        } else {
          sliceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(
          int index) {
        return getSliceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
          int index) {
        if (sliceIdsBuilder_ == null) {
          return sliceIds_.get(index);  } else {
          return sliceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
           getSliceIdsOrBuilderList() {
        if (sliceIdsBuilder_ != null) {
          return sliceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sliceIds_);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
        return getSliceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.SliceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(
          int index) {
        return getSliceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.SliceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 5;</code>
       */
      public java.util.List<context.ContextOuterClass.SliceId.Builder> 
           getSliceIdsBuilderList() {
        return getSliceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
          getSliceIdsFieldBuilder() {
        if (sliceIdsBuilder_ == null) {
          sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
                  sliceIds_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          sliceIds_ = null;
        }
        return sliceIdsBuilder_;
      }

      private context.ContextOuterClass.TeraFlowController controller_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> controllerBuilder_;
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       * @return Whether the controller field is set.
       */
      public boolean hasController() {
        return controllerBuilder_ != null || controller_ != null;
      }
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       * @return The controller.
       */
      public context.ContextOuterClass.TeraFlowController getController() {
        if (controllerBuilder_ == null) {
          return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
        } else {
          return controllerBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       */
      public Builder setController(context.ContextOuterClass.TeraFlowController value) {
        if (controllerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          controller_ = value;
          onChanged();
        } else {
          controllerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       */
      public Builder setController(
          context.ContextOuterClass.TeraFlowController.Builder builderForValue) {
        if (controllerBuilder_ == null) {
          controller_ = builderForValue.build();
          onChanged();
        } else {
          controllerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       */
      public Builder mergeController(context.ContextOuterClass.TeraFlowController value) {
        if (controllerBuilder_ == null) {
          if (controller_ != null) {
            controller_ =
              context.ContextOuterClass.TeraFlowController.newBuilder(controller_).mergeFrom(value).buildPartial();
          } else {
            controller_ = value;
          }
          onChanged();
        } else {
          controllerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       */
      public Builder clearController() {
        if (controllerBuilder_ == null) {
          controller_ = null;
          onChanged();
        } else {
          controller_ = null;
          controllerBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       */
      public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() {
        
        onChanged();
        return getControllerFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       */
      public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
        if (controllerBuilder_ != null) {
          return controllerBuilder_.getMessageOrBuilder();
        } else {
          return controller_ == null ?
              context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
        }
      }
      /**
       * <code>.context.TeraFlowController controller = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> 
          getControllerFieldBuilder() {
        if (controllerBuilder_ == null) {
          controllerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder>(
                  getController(),
                  getParentForChildren(),
                  isClean());
          controller_ = null;
        }
        return controllerBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Context)
    }

    // @@protoc_insertion_point(class_scope:context.Context)
    private static final context.ContextOuterClass.Context DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Context();
    }

    public static context.ContextOuterClass.Context getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Context getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ContextIdListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ContextIdList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    java.util.List<context.ContextOuterClass.ContextId> 
        getContextIdsList();
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    context.ContextOuterClass.ContextId getContextIds(int index);
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    int getContextIdsCount();
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> 
        getContextIdsOrBuilderList();
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.ContextIdList}
   */
  public static final class ContextIdList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ContextIdList)
      ContextIdListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ContextIdList.newBuilder() to construct.
    private ContextIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ContextIdList() {
      contextIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ContextIdList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ContextIdList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                contextIds_ = new java.util.ArrayList<context.ContextOuterClass.ContextId>();
                mutable_bitField0_ |= 0x00000001;
              }
              contextIds_.add(
                  input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ContextIdList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ContextIdList.class, context.ContextOuterClass.ContextIdList.Builder.class);
    }

    public static final int CONTEXT_IDS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.ContextId> contextIds_;
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ContextId> getContextIdsList() {
      return contextIds_;
    }
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> 
        getContextIdsOrBuilderList() {
      return contextIds_;
    }
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    @java.lang.Override
    public int getContextIdsCount() {
      return contextIds_.size();
    }
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextId getContextIds(int index) {
      return contextIds_.get(index);
    }
    /**
     * <code>repeated .context.ContextId context_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(
        int index) {
      return contextIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < contextIds_.size(); i++) {
        output.writeMessage(1, contextIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < contextIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, contextIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ContextIdList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ContextIdList other = (context.ContextOuterClass.ContextIdList) obj;

      if (!getContextIdsList()
          .equals(other.getContextIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ContextIdList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextIdList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextIdList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextIdList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextIdList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextIdList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextIdList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextIdList 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 context.ContextOuterClass.ContextIdList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextIdList 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 context.ContextOuterClass.ContextIdList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextIdList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ContextIdList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ContextIdList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ContextIdList)
        context.ContextOuterClass.ContextIdListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ContextIdList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ContextIdList.class, context.ContextOuterClass.ContextIdList.Builder.class);
      }

      // Construct using context.ContextOuterClass.ContextIdList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getContextIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextIdsBuilder_ == null) {
          contextIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          contextIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextIdList getDefaultInstanceForType() {
        return context.ContextOuterClass.ContextIdList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextIdList build() {
        context.ContextOuterClass.ContextIdList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextIdList buildPartial() {
        context.ContextOuterClass.ContextIdList result = new context.ContextOuterClass.ContextIdList(this);
        int from_bitField0_ = bitField0_;
        if (contextIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.contextIds_ = contextIds_;
        } else {
          result.contextIds_ = contextIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ContextIdList) {
          return mergeFrom((context.ContextOuterClass.ContextIdList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ContextIdList other) {
        if (other == context.ContextOuterClass.ContextIdList.getDefaultInstance()) return this;
        if (contextIdsBuilder_ == null) {
          if (!other.contextIds_.isEmpty()) {
            if (contextIds_.isEmpty()) {
              contextIds_ = other.contextIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureContextIdsIsMutable();
              contextIds_.addAll(other.contextIds_);
            }
            onChanged();
          }
        } else {
          if (!other.contextIds_.isEmpty()) {
            if (contextIdsBuilder_.isEmpty()) {
              contextIdsBuilder_.dispose();
              contextIdsBuilder_ = null;
              contextIds_ = other.contextIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              contextIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getContextIdsFieldBuilder() : null;
            } else {
              contextIdsBuilder_.addAllMessages(other.contextIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ContextIdList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ContextIdList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.ContextId> contextIds_ =
        java.util.Collections.emptyList();
      private void ensureContextIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          contextIds_ = new java.util.ArrayList<context.ContextOuterClass.ContextId>(contextIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdsBuilder_;

      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ContextId> getContextIdsList() {
        if (contextIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(contextIds_);
        } else {
          return contextIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public int getContextIdsCount() {
        if (contextIdsBuilder_ == null) {
          return contextIds_.size();
        } else {
          return contextIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public context.ContextOuterClass.ContextId getContextIds(int index) {
        if (contextIdsBuilder_ == null) {
          return contextIds_.get(index);
        } else {
          return contextIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder setContextIds(
          int index, context.ContextOuterClass.ContextId value) {
        if (contextIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContextIdsIsMutable();
          contextIds_.set(index, value);
          onChanged();
        } else {
          contextIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder setContextIds(
          int index, context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdsBuilder_ == null) {
          ensureContextIdsIsMutable();
          contextIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          contextIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder addContextIds(context.ContextOuterClass.ContextId value) {
        if (contextIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContextIdsIsMutable();
          contextIds_.add(value);
          onChanged();
        } else {
          contextIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder addContextIds(
          int index, context.ContextOuterClass.ContextId value) {
        if (contextIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContextIdsIsMutable();
          contextIds_.add(index, value);
          onChanged();
        } else {
          contextIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder addContextIds(
          context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdsBuilder_ == null) {
          ensureContextIdsIsMutable();
          contextIds_.add(builderForValue.build());
          onChanged();
        } else {
          contextIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder addContextIds(
          int index, context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdsBuilder_ == null) {
          ensureContextIdsIsMutable();
          contextIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          contextIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder addAllContextIds(
          java.lang.Iterable<? extends context.ContextOuterClass.ContextId> values) {
        if (contextIdsBuilder_ == null) {
          ensureContextIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, contextIds_);
          onChanged();
        } else {
          contextIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder clearContextIds() {
        if (contextIdsBuilder_ == null) {
          contextIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          contextIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public Builder removeContextIds(int index) {
        if (contextIdsBuilder_ == null) {
          ensureContextIdsIsMutable();
          contextIds_.remove(index);
          onChanged();
        } else {
          contextIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder getContextIdsBuilder(
          int index) {
        return getContextIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(
          int index) {
        if (contextIdsBuilder_ == null) {
          return contextIds_.get(index);  } else {
          return contextIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> 
           getContextIdsOrBuilderList() {
        if (contextIdsBuilder_ != null) {
          return contextIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(contextIds_);
        }
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder addContextIdsBuilder() {
        return getContextIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.ContextId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder addContextIdsBuilder(
          int index) {
        return getContextIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ContextId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ContextId context_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ContextId.Builder> 
           getContextIdsBuilderList() {
        return getContextIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
          getContextIdsFieldBuilder() {
        if (contextIdsBuilder_ == null) {
          contextIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
                  contextIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          contextIds_ = null;
        }
        return contextIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ContextIdList)
    }

    // @@protoc_insertion_point(class_scope:context.ContextIdList)
    private static final context.ContextOuterClass.ContextIdList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ContextIdList();
    }

    public static context.ContextOuterClass.ContextIdList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ContextIdList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ContextListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ContextList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    java.util.List<context.ContextOuterClass.Context> 
        getContextsList();
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    context.ContextOuterClass.Context getContexts(int index);
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    int getContextsCount();
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> 
        getContextsOrBuilderList();
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.ContextList}
   */
  public static final class ContextList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ContextList)
      ContextListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ContextList.newBuilder() to construct.
    private ContextList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ContextList() {
      contexts_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ContextList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ContextList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                contexts_ = new java.util.ArrayList<context.ContextOuterClass.Context>();
                mutable_bitField0_ |= 0x00000001;
              }
              contexts_.add(
                  input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          contexts_ = java.util.Collections.unmodifiableList(contexts_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ContextList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ContextList.class, context.ContextOuterClass.ContextList.Builder.class);
    }

    public static final int CONTEXTS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.Context> contexts_;
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Context> getContextsList() {
      return contexts_;
    }
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> 
        getContextsOrBuilderList() {
      return contexts_;
    }
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    @java.lang.Override
    public int getContextsCount() {
      return contexts_.size();
    }
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Context getContexts(int index) {
      return contexts_.get(index);
    }
    /**
     * <code>repeated .context.Context contexts = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(
        int index) {
      return contexts_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < contexts_.size(); i++) {
        output.writeMessage(1, contexts_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < contexts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, contexts_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ContextList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ContextList other = (context.ContextOuterClass.ContextList) obj;

      if (!getContextsList()
          .equals(other.getContextsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ContextList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextList 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 context.ContextOuterClass.ContextList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextList 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 context.ContextOuterClass.ContextList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ContextList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ContextList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ContextList)
        context.ContextOuterClass.ContextListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ContextList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ContextList.class, context.ContextOuterClass.ContextList.Builder.class);
      }

      // Construct using context.ContextOuterClass.ContextList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getContextsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextsBuilder_ == null) {
          contexts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          contextsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextList getDefaultInstanceForType() {
        return context.ContextOuterClass.ContextList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextList build() {
        context.ContextOuterClass.ContextList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextList buildPartial() {
        context.ContextOuterClass.ContextList result = new context.ContextOuterClass.ContextList(this);
        int from_bitField0_ = bitField0_;
        if (contextsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            contexts_ = java.util.Collections.unmodifiableList(contexts_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.contexts_ = contexts_;
        } else {
          result.contexts_ = contextsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ContextList) {
          return mergeFrom((context.ContextOuterClass.ContextList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ContextList other) {
        if (other == context.ContextOuterClass.ContextList.getDefaultInstance()) return this;
        if (contextsBuilder_ == null) {
          if (!other.contexts_.isEmpty()) {
            if (contexts_.isEmpty()) {
              contexts_ = other.contexts_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureContextsIsMutable();
              contexts_.addAll(other.contexts_);
            }
            onChanged();
          }
        } else {
          if (!other.contexts_.isEmpty()) {
            if (contextsBuilder_.isEmpty()) {
              contextsBuilder_.dispose();
              contextsBuilder_ = null;
              contexts_ = other.contexts_;
              bitField0_ = (bitField0_ & ~0x00000001);
              contextsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getContextsFieldBuilder() : null;
            } else {
              contextsBuilder_.addAllMessages(other.contexts_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ContextList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ContextList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.Context> contexts_ =
        java.util.Collections.emptyList();
      private void ensureContextsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          contexts_ = new java.util.ArrayList<context.ContextOuterClass.Context>(contexts_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder> contextsBuilder_;

      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Context> getContextsList() {
        if (contextsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(contexts_);
        } else {
          return contextsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public int getContextsCount() {
        if (contextsBuilder_ == null) {
          return contexts_.size();
        } else {
          return contextsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public context.ContextOuterClass.Context getContexts(int index) {
        if (contextsBuilder_ == null) {
          return contexts_.get(index);
        } else {
          return contextsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder setContexts(
          int index, context.ContextOuterClass.Context value) {
        if (contextsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContextsIsMutable();
          contexts_.set(index, value);
          onChanged();
        } else {
          contextsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder setContexts(
          int index, context.ContextOuterClass.Context.Builder builderForValue) {
        if (contextsBuilder_ == null) {
          ensureContextsIsMutable();
          contexts_.set(index, builderForValue.build());
          onChanged();
        } else {
          contextsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder addContexts(context.ContextOuterClass.Context value) {
        if (contextsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContextsIsMutable();
          contexts_.add(value);
          onChanged();
        } else {
          contextsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder addContexts(
          int index, context.ContextOuterClass.Context value) {
        if (contextsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContextsIsMutable();
          contexts_.add(index, value);
          onChanged();
        } else {
          contextsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder addContexts(
          context.ContextOuterClass.Context.Builder builderForValue) {
        if (contextsBuilder_ == null) {
          ensureContextsIsMutable();
          contexts_.add(builderForValue.build());
          onChanged();
        } else {
          contextsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder addContexts(
          int index, context.ContextOuterClass.Context.Builder builderForValue) {
        if (contextsBuilder_ == null) {
          ensureContextsIsMutable();
          contexts_.add(index, builderForValue.build());
          onChanged();
        } else {
          contextsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder addAllContexts(
          java.lang.Iterable<? extends context.ContextOuterClass.Context> values) {
        if (contextsBuilder_ == null) {
          ensureContextsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, contexts_);
          onChanged();
        } else {
          contextsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder clearContexts() {
        if (contextsBuilder_ == null) {
          contexts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          contextsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public Builder removeContexts(int index) {
        if (contextsBuilder_ == null) {
          ensureContextsIsMutable();
          contexts_.remove(index);
          onChanged();
        } else {
          contextsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public context.ContextOuterClass.Context.Builder getContextsBuilder(
          int index) {
        return getContextsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(
          int index) {
        if (contextsBuilder_ == null) {
          return contexts_.get(index);  } else {
          return contextsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> 
           getContextsOrBuilderList() {
        if (contextsBuilder_ != null) {
          return contextsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(contexts_);
        }
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public context.ContextOuterClass.Context.Builder addContextsBuilder() {
        return getContextsFieldBuilder().addBuilder(
            context.ContextOuterClass.Context.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public context.ContextOuterClass.Context.Builder addContextsBuilder(
          int index) {
        return getContextsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Context.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Context contexts = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Context.Builder> 
           getContextsBuilderList() {
        return getContextsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder> 
          getContextsFieldBuilder() {
        if (contextsBuilder_ == null) {
          contextsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder>(
                  contexts_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          contexts_ = null;
        }
        return contextsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ContextList)
    }

    // @@protoc_insertion_point(class_scope:context.ContextList)
    private static final context.ContextOuterClass.ContextList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ContextList();
    }

    public static context.ContextOuterClass.ContextList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ContextList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ContextEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ContextEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    boolean hasEvent();
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    context.ContextOuterClass.Event getEvent();
    /**
     * <code>.context.Event event = 1;</code>
     */
    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

    /**
     * <code>.context.ContextId context_id = 2;</code>
     * @return Whether the contextId field is set.
     */
    boolean hasContextId();
    /**
     * <code>.context.ContextId context_id = 2;</code>
     * @return The contextId.
     */
    context.ContextOuterClass.ContextId getContextId();
    /**
     * <code>.context.ContextId context_id = 2;</code>
     */
    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
  }
  /**
   * Protobuf type {@code context.ContextEvent}
   */
  public static final class ContextEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ContextEvent)
      ContextEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ContextEvent.newBuilder() to construct.
    private ContextEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ContextEvent() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ContextEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ContextEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Event.Builder subBuilder = null;
              if (event_ != null) {
                subBuilder = event_.toBuilder();
              }
              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(event_);
                event_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.ContextId.Builder subBuilder = null;
              if (contextId_ != null) {
                subBuilder = contextId_.toBuilder();
              }
              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contextId_);
                contextId_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ContextEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ContextEvent.class, context.ContextOuterClass.ContextEvent.Builder.class);
    }

    public static final int EVENT_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Event event_;
    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    @java.lang.Override
    public boolean hasEvent() {
      return event_ != null;
    }
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    @java.lang.Override
    public context.ContextOuterClass.Event getEvent() {
      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
    }
    /**
     * <code>.context.Event event = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
      return getEvent();
    }

    public static final int CONTEXT_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.ContextId contextId_;
    /**
     * <code>.context.ContextId context_id = 2;</code>
     * @return Whether the contextId field is set.
     */
    @java.lang.Override
    public boolean hasContextId() {
      return contextId_ != null;
    }
    /**
     * <code>.context.ContextId context_id = 2;</code>
     * @return The contextId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextId getContextId() {
      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
    }
    /**
     * <code>.context.ContextId context_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
      return getContextId();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (event_ != null) {
        output.writeMessage(1, getEvent());
      }
      if (contextId_ != null) {
        output.writeMessage(2, getContextId());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (event_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEvent());
      }
      if (contextId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getContextId());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ContextEvent)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ContextEvent other = (context.ContextOuterClass.ContextEvent) obj;

      if (hasEvent() != other.hasEvent()) return false;
      if (hasEvent()) {
        if (!getEvent()
            .equals(other.getEvent())) return false;
      }
      if (hasContextId() != other.hasContextId()) return false;
      if (hasContextId()) {
        if (!getContextId()
            .equals(other.getContextId())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEvent()) {
        hash = (37 * hash) + EVENT_FIELD_NUMBER;
        hash = (53 * hash) + getEvent().hashCode();
      }
      if (hasContextId()) {
        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getContextId().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ContextEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ContextEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ContextEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextEvent 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 context.ContextOuterClass.ContextEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextEvent 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 context.ContextOuterClass.ContextEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ContextEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ContextEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ContextEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ContextEvent)
        context.ContextOuterClass.ContextEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ContextEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ContextEvent.class, context.ContextOuterClass.ContextEvent.Builder.class);
      }

      // Construct using context.ContextOuterClass.ContextEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (eventBuilder_ == null) {
          event_ = null;
        } else {
          event_ = null;
          eventBuilder_ = null;
        }
        if (contextIdBuilder_ == null) {
          contextId_ = null;
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextEvent getDefaultInstanceForType() {
        return context.ContextOuterClass.ContextEvent.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextEvent build() {
        context.ContextOuterClass.ContextEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ContextEvent buildPartial() {
        context.ContextOuterClass.ContextEvent result = new context.ContextOuterClass.ContextEvent(this);
        if (eventBuilder_ == null) {
          result.event_ = event_;
        } else {
          result.event_ = eventBuilder_.build();
        }
        if (contextIdBuilder_ == null) {
          result.contextId_ = contextId_;
        } else {
          result.contextId_ = contextIdBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ContextEvent) {
          return mergeFrom((context.ContextOuterClass.ContextEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ContextEvent other) {
        if (other == context.ContextOuterClass.ContextEvent.getDefaultInstance()) return this;
        if (other.hasEvent()) {
          mergeEvent(other.getEvent());
        }
        if (other.hasContextId()) {
          mergeContextId(other.getContextId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ContextEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ContextEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Event event_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
      /**
       * <code>.context.Event event = 1;</code>
       * @return Whether the event field is set.
       */
      public boolean hasEvent() {
        return eventBuilder_ != null || event_ != null;
      }
      /**
       * <code>.context.Event event = 1;</code>
       * @return The event.
       */
      public context.ContextOuterClass.Event getEvent() {
        if (eventBuilder_ == null) {
          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        } else {
          return eventBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          eventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(
          context.ContextOuterClass.Event.Builder builderForValue) {
        if (eventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          eventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder mergeEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (event_ != null) {
            event_ =
              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          eventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder clearEvent() {
        if (eventBuilder_ == null) {
          event_ = null;
          onChanged();
        } else {
          event_ = null;
          eventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.Event.Builder getEventBuilder() {
        
        onChanged();
        return getEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
        if (eventBuilder_ != null) {
          return eventBuilder_.getMessageOrBuilder();
        } else {
          return event_ == null ?
              context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
          getEventFieldBuilder() {
        if (eventBuilder_ == null) {
          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
                  getEvent(),
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        return eventBuilder_;
      }

      private context.ContextOuterClass.ContextId contextId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
      /**
       * <code>.context.ContextId context_id = 2;</code>
       * @return Whether the contextId field is set.
       */
      public boolean hasContextId() {
        return contextIdBuilder_ != null || contextId_ != null;
      }
      /**
       * <code>.context.ContextId context_id = 2;</code>
       * @return The contextId.
       */
      public context.ContextOuterClass.ContextId getContextId() {
        if (contextIdBuilder_ == null) {
          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        } else {
          return contextIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ContextId context_id = 2;</code>
       */
      public Builder setContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextId_ = value;
          onChanged();
        } else {
          contextIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 2;</code>
       */
      public Builder setContextId(
          context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdBuilder_ == null) {
          contextId_ = builderForValue.build();
          onChanged();
        } else {
          contextIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 2;</code>
       */
      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (contextId_ != null) {
            contextId_ =
              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
          } else {
            contextId_ = value;
          }
          onChanged();
        } else {
          contextIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 2;</code>
       */
      public Builder clearContextId() {
        if (contextIdBuilder_ == null) {
          contextId_ = null;
          onChanged();
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 2;</code>
       */
      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
        
        onChanged();
        return getContextIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ContextId context_id = 2;</code>
       */
      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
        if (contextIdBuilder_ != null) {
          return contextIdBuilder_.getMessageOrBuilder();
        } else {
          return contextId_ == null ?
              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }
      }
      /**
       * <code>.context.ContextId context_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
          getContextIdFieldBuilder() {
        if (contextIdBuilder_ == null) {
          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
                  getContextId(),
                  getParentForChildren(),
                  isClean());
          contextId_ = null;
        }
        return contextIdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ContextEvent)
    }

    // @@protoc_insertion_point(class_scope:context.ContextEvent)
    private static final context.ContextOuterClass.ContextEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ContextEvent();
    }

    public static context.ContextOuterClass.ContextEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ContextEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologyIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.TopologyId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    boolean hasContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    context.ContextOuterClass.ContextId getContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

    /**
     * <code>.context.Uuid topology_uuid = 2;</code>
     * @return Whether the topologyUuid field is set.
     */
    boolean hasTopologyUuid();
    /**
     * <code>.context.Uuid topology_uuid = 2;</code>
     * @return The topologyUuid.
     */
    context.ContextOuterClass.Uuid getTopologyUuid();
    /**
     * <code>.context.Uuid topology_uuid = 2;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder();
  }
  /**
   * <pre>
   * ----- Topology ------------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.TopologyId}
   */
  public static final class TopologyId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.TopologyId)
      TopologyIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TopologyId.newBuilder() to construct.
    private TopologyId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TopologyId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TopologyId();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TopologyId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ContextId.Builder subBuilder = null;
              if (contextId_ != null) {
                subBuilder = contextId_.toBuilder();
              }
              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contextId_);
                contextId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (topologyUuid_ != null) {
                subBuilder = topologyUuid_.toBuilder();
              }
              topologyUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(topologyUuid_);
                topologyUuid_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_TopologyId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.TopologyId.class, context.ContextOuterClass.TopologyId.Builder.class);
    }

    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ContextId contextId_;
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    @java.lang.Override
    public boolean hasContextId() {
      return contextId_ != null;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextId getContextId() {
      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
      return getContextId();
    }

    public static final int TOPOLOGY_UUID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.Uuid topologyUuid_;
    /**
     * <code>.context.Uuid topology_uuid = 2;</code>
     * @return Whether the topologyUuid field is set.
     */
    @java.lang.Override
    public boolean hasTopologyUuid() {
      return topologyUuid_ != null;
    }
    /**
     * <code>.context.Uuid topology_uuid = 2;</code>
     * @return The topologyUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getTopologyUuid() {
      return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
    }
    /**
     * <code>.context.Uuid topology_uuid = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
      return getTopologyUuid();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (contextId_ != null) {
        output.writeMessage(1, getContextId());
      }
      if (topologyUuid_ != null) {
        output.writeMessage(2, getTopologyUuid());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (contextId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getContextId());
      }
      if (topologyUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTopologyUuid());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.TopologyId)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.TopologyId other = (context.ContextOuterClass.TopologyId) obj;

      if (hasContextId() != other.hasContextId()) return false;
      if (hasContextId()) {
        if (!getContextId()
            .equals(other.getContextId())) return false;
      }
      if (hasTopologyUuid() != other.hasTopologyUuid()) return false;
      if (hasTopologyUuid()) {
        if (!getTopologyUuid()
            .equals(other.getTopologyUuid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasContextId()) {
        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getContextId().hashCode();
      }
      if (hasTopologyUuid()) {
        hash = (37 * hash) + TOPOLOGY_UUID_FIELD_NUMBER;
        hash = (53 * hash) + getTopologyUuid().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.TopologyId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyId 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 context.ContextOuterClass.TopologyId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyId 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 context.ContextOuterClass.TopologyId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.TopologyId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Topology ------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.TopologyId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.TopologyId)
        context.ContextOuterClass.TopologyIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_TopologyId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.TopologyId.class, context.ContextOuterClass.TopologyId.Builder.class);
      }

      // Construct using context.ContextOuterClass.TopologyId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextIdBuilder_ == null) {
          contextId_ = null;
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }
        if (topologyUuidBuilder_ == null) {
          topologyUuid_ = null;
        } else {
          topologyUuid_ = null;
          topologyUuidBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyId getDefaultInstanceForType() {
        return context.ContextOuterClass.TopologyId.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyId build() {
        context.ContextOuterClass.TopologyId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyId buildPartial() {
        context.ContextOuterClass.TopologyId result = new context.ContextOuterClass.TopologyId(this);
        if (contextIdBuilder_ == null) {
          result.contextId_ = contextId_;
        } else {
          result.contextId_ = contextIdBuilder_.build();
        }
        if (topologyUuidBuilder_ == null) {
          result.topologyUuid_ = topologyUuid_;
        } else {
          result.topologyUuid_ = topologyUuidBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.TopologyId) {
          return mergeFrom((context.ContextOuterClass.TopologyId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.TopologyId other) {
        if (other == context.ContextOuterClass.TopologyId.getDefaultInstance()) return this;
        if (other.hasContextId()) {
          mergeContextId(other.getContextId());
        }
        if (other.hasTopologyUuid()) {
          mergeTopologyUuid(other.getTopologyUuid());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.TopologyId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.TopologyId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.ContextId contextId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return Whether the contextId field is set.
       */
      public boolean hasContextId() {
        return contextIdBuilder_ != null || contextId_ != null;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return The contextId.
       */
      public context.ContextOuterClass.ContextId getContextId() {
        if (contextIdBuilder_ == null) {
          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        } else {
          return contextIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextId_ = value;
          onChanged();
        } else {
          contextIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(
          context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdBuilder_ == null) {
          contextId_ = builderForValue.build();
          onChanged();
        } else {
          contextIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (contextId_ != null) {
            contextId_ =
              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
          } else {
            contextId_ = value;
          }
          onChanged();
        } else {
          contextIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder clearContextId() {
        if (contextIdBuilder_ == null) {
          contextId_ = null;
          onChanged();
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
        
        onChanged();
        return getContextIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
        if (contextIdBuilder_ != null) {
          return contextIdBuilder_.getMessageOrBuilder();
        } else {
          return contextId_ == null ?
              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
          getContextIdFieldBuilder() {
        if (contextIdBuilder_ == null) {
          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
                  getContextId(),
                  getParentForChildren(),
                  isClean());
          contextId_ = null;
        }
        return contextIdBuilder_;
      }

      private context.ContextOuterClass.Uuid topologyUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> topologyUuidBuilder_;
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       * @return Whether the topologyUuid field is set.
       */
      public boolean hasTopologyUuid() {
        return topologyUuidBuilder_ != null || topologyUuid_ != null;
      }
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       * @return The topologyUuid.
       */
      public context.ContextOuterClass.Uuid getTopologyUuid() {
        if (topologyUuidBuilder_ == null) {
          return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
        } else {
          return topologyUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       */
      public Builder setTopologyUuid(context.ContextOuterClass.Uuid value) {
        if (topologyUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          topologyUuid_ = value;
          onChanged();
        } else {
          topologyUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       */
      public Builder setTopologyUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (topologyUuidBuilder_ == null) {
          topologyUuid_ = builderForValue.build();
          onChanged();
        } else {
          topologyUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       */
      public Builder mergeTopologyUuid(context.ContextOuterClass.Uuid value) {
        if (topologyUuidBuilder_ == null) {
          if (topologyUuid_ != null) {
            topologyUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(topologyUuid_).mergeFrom(value).buildPartial();
          } else {
            topologyUuid_ = value;
          }
          onChanged();
        } else {
          topologyUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       */
      public Builder clearTopologyUuid() {
        if (topologyUuidBuilder_ == null) {
          topologyUuid_ = null;
          onChanged();
        } else {
          topologyUuid_ = null;
          topologyUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getTopologyUuidBuilder() {
        
        onChanged();
        return getTopologyUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
        if (topologyUuidBuilder_ != null) {
          return topologyUuidBuilder_.getMessageOrBuilder();
        } else {
          return topologyUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
        }
      }
      /**
       * <code>.context.Uuid topology_uuid = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getTopologyUuidFieldBuilder() {
        if (topologyUuidBuilder_ == null) {
          topologyUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getTopologyUuid(),
                  getParentForChildren(),
                  isClean());
          topologyUuid_ = null;
        }
        return topologyUuidBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.TopologyId)
    }

    // @@protoc_insertion_point(class_scope:context.TopologyId)
    private static final context.ContextOuterClass.TopologyId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyId();
    }

    public static context.ContextOuterClass.TopologyId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.TopologyId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Topology)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return Whether the topologyId field is set.
     */
    boolean hasTopologyId();
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return The topologyId.
     */
    context.ContextOuterClass.TopologyId getTopologyId();
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     */
    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    java.util.List<context.ContextOuterClass.DeviceId> 
        getDeviceIdsList();
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    context.ContextOuterClass.DeviceId getDeviceIds(int index);
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    int getDeviceIdsCount();
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
        getDeviceIdsOrBuilderList();
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
        int index);

    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    java.util.List<context.ContextOuterClass.LinkId> 
        getLinkIdsList();
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    context.ContextOuterClass.LinkId getLinkIds(int index);
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    int getLinkIdsCount();
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
        getLinkIdsOrBuilderList();
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.Topology}
   */
  public static final class Topology extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Topology)
      TopologyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Topology.newBuilder() to construct.
    private Topology(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Topology() {
      name_ = "";
      deviceIds_ = java.util.Collections.emptyList();
      linkIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Topology();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Topology(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
              if (topologyId_ != null) {
                subBuilder = topologyId_.toBuilder();
              }
              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(topologyId_);
                topologyId_ = subBuilder.buildPartial();
              }

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

              name_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
                mutable_bitField0_ |= 0x00000001;
              }
              deviceIds_.add(
                  input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
                mutable_bitField0_ |= 0x00000002;
              }
              linkIds_.add(
                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Topology_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Topology_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Topology.class, context.ContextOuterClass.Topology.Builder.class);
    }

    public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.TopologyId topologyId_;
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return Whether the topologyId field is set.
     */
    @java.lang.Override
    public boolean hasTopologyId() {
      return topologyId_ != null;
    }
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return The topologyId.
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyId getTopologyId() {
      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
    }
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
      return getTopologyId();
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEVICE_IDS_FIELD_NUMBER = 3;
    private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
      return deviceIds_;
    }
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
        getDeviceIdsOrBuilderList() {
      return deviceIds_;
    }
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    @java.lang.Override
    public int getDeviceIdsCount() {
      return deviceIds_.size();
    }
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
      return deviceIds_.get(index);
    }
    /**
     * <code>repeated .context.DeviceId device_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
        int index) {
      return deviceIds_.get(index);
    }

    public static final int LINK_IDS_FIELD_NUMBER = 4;
    private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
      return linkIds_;
    }
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
        getLinkIdsOrBuilderList() {
      return linkIds_;
    }
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    @java.lang.Override
    public int getLinkIdsCount() {
      return linkIds_.size();
    }
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkId getLinkIds(int index) {
      return linkIds_.get(index);
    }
    /**
     * <code>repeated .context.LinkId link_ids = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
        int index) {
      return linkIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (topologyId_ != null) {
        output.writeMessage(1, getTopologyId());
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      for (int i = 0; i < deviceIds_.size(); i++) {
        output.writeMessage(3, deviceIds_.get(i));
      }
      for (int i = 0; i < linkIds_.size(); i++) {
        output.writeMessage(4, linkIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (topologyId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTopologyId());
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      for (int i = 0; i < deviceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, deviceIds_.get(i));
      }
      for (int i = 0; i < linkIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, linkIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Topology)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Topology other = (context.ContextOuterClass.Topology) obj;

      if (hasTopologyId() != other.hasTopologyId()) return false;
      if (hasTopologyId()) {
        if (!getTopologyId()
            .equals(other.getTopologyId())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (!getDeviceIdsList()
          .equals(other.getDeviceIdsList())) return false;
      if (!getLinkIdsList()
          .equals(other.getLinkIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTopologyId()) {
        hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTopologyId().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getDeviceIdsCount() > 0) {
        hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceIdsList().hashCode();
      }
      if (getLinkIdsCount() > 0) {
        hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getLinkIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Topology parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Topology parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Topology parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Topology parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Topology parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Topology parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Topology parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Topology 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 context.ContextOuterClass.Topology parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Topology 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 context.ContextOuterClass.Topology parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Topology parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Topology prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Topology}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Topology)
        context.ContextOuterClass.TopologyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Topology_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Topology_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Topology.class, context.ContextOuterClass.Topology.Builder.class);
      }

      // Construct using context.ContextOuterClass.Topology.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDeviceIdsFieldBuilder();
          getLinkIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (topologyIdBuilder_ == null) {
          topologyId_ = null;
        } else {
          topologyId_ = null;
          topologyIdBuilder_ = null;
        }
        name_ = "";

        if (deviceIdsBuilder_ == null) {
          deviceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          deviceIdsBuilder_.clear();
        }
        if (linkIdsBuilder_ == null) {
          linkIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          linkIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Topology_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Topology getDefaultInstanceForType() {
        return context.ContextOuterClass.Topology.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Topology build() {
        context.ContextOuterClass.Topology result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Topology buildPartial() {
        context.ContextOuterClass.Topology result = new context.ContextOuterClass.Topology(this);
        int from_bitField0_ = bitField0_;
        if (topologyIdBuilder_ == null) {
          result.topologyId_ = topologyId_;
        } else {
          result.topologyId_ = topologyIdBuilder_.build();
        }
        result.name_ = name_;
        if (deviceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.deviceIds_ = deviceIds_;
        } else {
          result.deviceIds_ = deviceIdsBuilder_.build();
        }
        if (linkIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.linkIds_ = linkIds_;
        } else {
          result.linkIds_ = linkIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Topology) {
          return mergeFrom((context.ContextOuterClass.Topology)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Topology other) {
        if (other == context.ContextOuterClass.Topology.getDefaultInstance()) return this;
        if (other.hasTopologyId()) {
          mergeTopologyId(other.getTopologyId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (deviceIdsBuilder_ == null) {
          if (!other.deviceIds_.isEmpty()) {
            if (deviceIds_.isEmpty()) {
              deviceIds_ = other.deviceIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDeviceIdsIsMutable();
              deviceIds_.addAll(other.deviceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.deviceIds_.isEmpty()) {
            if (deviceIdsBuilder_.isEmpty()) {
              deviceIdsBuilder_.dispose();
              deviceIdsBuilder_ = null;
              deviceIds_ = other.deviceIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              deviceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDeviceIdsFieldBuilder() : null;
            } else {
              deviceIdsBuilder_.addAllMessages(other.deviceIds_);
            }
          }
        }
        if (linkIdsBuilder_ == null) {
          if (!other.linkIds_.isEmpty()) {
            if (linkIds_.isEmpty()) {
              linkIds_ = other.linkIds_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureLinkIdsIsMutable();
              linkIds_.addAll(other.linkIds_);
            }
            onChanged();
          }
        } else {
          if (!other.linkIds_.isEmpty()) {
            if (linkIdsBuilder_.isEmpty()) {
              linkIdsBuilder_.dispose();
              linkIdsBuilder_ = null;
              linkIds_ = other.linkIds_;
              bitField0_ = (bitField0_ & ~0x00000002);
              linkIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLinkIdsFieldBuilder() : null;
            } else {
              linkIdsBuilder_.addAllMessages(other.linkIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Topology parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Topology) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.TopologyId topologyId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       * @return Whether the topologyId field is set.
       */
      public boolean hasTopologyId() {
        return topologyIdBuilder_ != null || topologyId_ != null;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       * @return The topologyId.
       */
      public context.ContextOuterClass.TopologyId getTopologyId() {
        if (topologyIdBuilder_ == null) {
          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        } else {
          return topologyIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
        if (topologyIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          topologyId_ = value;
          onChanged();
        } else {
          topologyIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder setTopologyId(
          context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdBuilder_ == null) {
          topologyId_ = builderForValue.build();
          onChanged();
        } else {
          topologyIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
        if (topologyIdBuilder_ == null) {
          if (topologyId_ != null) {
            topologyId_ =
              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
          } else {
            topologyId_ = value;
          }
          onChanged();
        } else {
          topologyIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder clearTopologyId() {
        if (topologyIdBuilder_ == null) {
          topologyId_ = null;
          onChanged();
        } else {
          topologyId_ = null;
          topologyIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
        
        onChanged();
        return getTopologyIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
        if (topologyIdBuilder_ != null) {
          return topologyIdBuilder_.getMessageOrBuilder();
        } else {
          return topologyId_ == null ?
              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
          getTopologyIdFieldBuilder() {
        if (topologyIdBuilder_ == null) {
          topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
                  getTopologyId(),
                  getParentForChildren(),
                  isClean());
          topologyId_ = null;
        }
        return topologyIdBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ =
        java.util.Collections.emptyList();
      private void ensureDeviceIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;

      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
        if (deviceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(deviceIds_);
        } else {
          return deviceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public int getDeviceIdsCount() {
        if (deviceIdsBuilder_ == null) {
          return deviceIds_.size();
        } else {
          return deviceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
        if (deviceIdsBuilder_ == null) {
          return deviceIds_.get(index);
        } else {
          return deviceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder setDeviceIds(
          int index, context.ContextOuterClass.DeviceId value) {
        if (deviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceIdsIsMutable();
          deviceIds_.set(index, value);
          onChanged();
        } else {
          deviceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder setDeviceIds(
          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          deviceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          deviceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
        if (deviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceIdsIsMutable();
          deviceIds_.add(value);
          onChanged();
        } else {
          deviceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder addDeviceIds(
          int index, context.ContextOuterClass.DeviceId value) {
        if (deviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceIdsIsMutable();
          deviceIds_.add(index, value);
          onChanged();
        } else {
          deviceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder addDeviceIds(
          context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          deviceIds_.add(builderForValue.build());
          onChanged();
        } else {
          deviceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder addDeviceIds(
          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          deviceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          deviceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder addAllDeviceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, deviceIds_);
          onChanged();
        } else {
          deviceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder clearDeviceIds() {
        if (deviceIdsBuilder_ == null) {
          deviceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          deviceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public Builder removeDeviceIds(int index) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          deviceIds_.remove(index);
          onChanged();
        } else {
          deviceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(
          int index) {
        return getDeviceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
          int index) {
        if (deviceIdsBuilder_ == null) {
          return deviceIds_.get(index);  } else {
          return deviceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
           getDeviceIdsOrBuilderList() {
        if (deviceIdsBuilder_ != null) {
          return deviceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(deviceIds_);
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
        return getDeviceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.DeviceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(
          int index) {
        return getDeviceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.DeviceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.DeviceId.Builder> 
           getDeviceIdsBuilderList() {
        return getDeviceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
          getDeviceIdsFieldBuilder() {
        if (deviceIdsBuilder_ == null) {
          deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
                  deviceIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          deviceIds_ = null;
        }
        return deviceIdsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.LinkId> linkIds_ =
        java.util.Collections.emptyList();
      private void ensureLinkIdsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;

      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
        if (linkIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(linkIds_);
        } else {
          return linkIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public int getLinkIdsCount() {
        if (linkIdsBuilder_ == null) {
          return linkIds_.size();
        } else {
          return linkIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public context.ContextOuterClass.LinkId getLinkIds(int index) {
        if (linkIdsBuilder_ == null) {
          return linkIds_.get(index);
        } else {
          return linkIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder setLinkIds(
          int index, context.ContextOuterClass.LinkId value) {
        if (linkIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIdsIsMutable();
          linkIds_.set(index, value);
          onChanged();
        } else {
          linkIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder setLinkIds(
          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          linkIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          linkIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
        if (linkIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIdsIsMutable();
          linkIds_.add(value);
          onChanged();
        } else {
          linkIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder addLinkIds(
          int index, context.ContextOuterClass.LinkId value) {
        if (linkIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIdsIsMutable();
          linkIds_.add(index, value);
          onChanged();
        } else {
          linkIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder addLinkIds(
          context.ContextOuterClass.LinkId.Builder builderForValue) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          linkIds_.add(builderForValue.build());
          onChanged();
        } else {
          linkIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder addLinkIds(
          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          linkIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          linkIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder addAllLinkIds(
          java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, linkIds_);
          onChanged();
        } else {
          linkIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder clearLinkIds() {
        if (linkIdsBuilder_ == null) {
          linkIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          linkIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public Builder removeLinkIds(int index) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          linkIds_.remove(index);
          onChanged();
        } else {
          linkIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(
          int index) {
        return getLinkIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
          int index) {
        if (linkIdsBuilder_ == null) {
          return linkIds_.get(index);  } else {
          return linkIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
           getLinkIdsOrBuilderList() {
        if (linkIdsBuilder_ != null) {
          return linkIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(linkIds_);
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
        return getLinkIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.LinkId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(
          int index) {
        return getLinkIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.LinkId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.LinkId link_ids = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.LinkId.Builder> 
           getLinkIdsBuilderList() {
        return getLinkIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
          getLinkIdsFieldBuilder() {
        if (linkIdsBuilder_ == null) {
          linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
                  linkIds_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          linkIds_ = null;
        }
        return linkIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Topology)
    }

    // @@protoc_insertion_point(class_scope:context.Topology)
    private static final context.ContextOuterClass.Topology DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Topology();
    }

    public static context.ContextOuterClass.Topology getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Topology getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologyDetailsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.TopologyDetails)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return Whether the topologyId field is set.
     */
    boolean hasTopologyId();
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return The topologyId.
     */
    context.ContextOuterClass.TopologyId getTopologyId();
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     */
    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    java.util.List<context.ContextOuterClass.Device> 
        getDevicesList();
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    context.ContextOuterClass.Device getDevices(int index);
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    int getDevicesCount();
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
        getDevicesOrBuilderList();
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
        int index);

    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    java.util.List<context.ContextOuterClass.Link> 
        getLinksList();
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    context.ContextOuterClass.Link getLinks(int index);
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    int getLinksCount();
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
        getLinksOrBuilderList();
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.TopologyDetails}
   */
  public static final class TopologyDetails extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.TopologyDetails)
      TopologyDetailsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TopologyDetails.newBuilder() to construct.
    private TopologyDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TopologyDetails() {
      name_ = "";
      devices_ = java.util.Collections.emptyList();
      links_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TopologyDetails();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TopologyDetails(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
              if (topologyId_ != null) {
                subBuilder = topologyId_.toBuilder();
              }
              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(topologyId_);
                topologyId_ = subBuilder.buildPartial();
              }

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

              name_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
                mutable_bitField0_ |= 0x00000001;
              }
              devices_.add(
                  input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
                mutable_bitField0_ |= 0x00000002;
              }
              links_.add(
                  input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          devices_ = java.util.Collections.unmodifiableList(devices_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          links_ = java.util.Collections.unmodifiableList(links_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
    }

    public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.TopologyId topologyId_;
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return Whether the topologyId field is set.
     */
    @java.lang.Override
    public boolean hasTopologyId() {
      return topologyId_ != null;
    }
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return The topologyId.
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyId getTopologyId() {
      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
    }
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
      return getTopologyId();
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEVICES_FIELD_NUMBER = 3;
    private java.util.List<context.ContextOuterClass.Device> devices_;
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
      return devices_;
    }
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
        getDevicesOrBuilderList() {
      return devices_;
    }
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    @java.lang.Override
    public int getDevicesCount() {
      return devices_.size();
    }
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Device getDevices(int index) {
      return devices_.get(index);
    }
    /**
     * <code>repeated .context.Device devices = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
        int index) {
      return devices_.get(index);
    }

    public static final int LINKS_FIELD_NUMBER = 4;
    private java.util.List<context.ContextOuterClass.Link> links_;
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Link> getLinksList() {
      return links_;
    }
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
        getLinksOrBuilderList() {
      return links_;
    }
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    @java.lang.Override
    public int getLinksCount() {
      return links_.size();
    }
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Link getLinks(int index) {
      return links_.get(index);
    }
    /**
     * <code>repeated .context.Link links = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
        int index) {
      return links_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (topologyId_ != null) {
        output.writeMessage(1, getTopologyId());
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      for (int i = 0; i < devices_.size(); i++) {
        output.writeMessage(3, devices_.get(i));
      }
      for (int i = 0; i < links_.size(); i++) {
        output.writeMessage(4, links_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (topologyId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTopologyId());
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      for (int i = 0; i < devices_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, devices_.get(i));
      }
      for (int i = 0; i < links_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, links_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.TopologyDetails)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.TopologyDetails other = (context.ContextOuterClass.TopologyDetails) obj;

      if (hasTopologyId() != other.hasTopologyId()) return false;
      if (hasTopologyId()) {
        if (!getTopologyId()
            .equals(other.getTopologyId())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (!getDevicesList()
          .equals(other.getDevicesList())) return false;
      if (!getLinksList()
          .equals(other.getLinksList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTopologyId()) {
        hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTopologyId().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getDevicesCount() > 0) {
        hash = (37 * hash) + DEVICES_FIELD_NUMBER;
        hash = (53 * hash) + getDevicesList().hashCode();
      }
      if (getLinksCount() > 0) {
        hash = (37 * hash) + LINKS_FIELD_NUMBER;
        hash = (53 * hash) + getLinksList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.TopologyDetails parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyDetails parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyDetails parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyDetails parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyDetails parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyDetails parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyDetails parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyDetails 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 context.ContextOuterClass.TopologyDetails parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyDetails 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 context.ContextOuterClass.TopologyDetails parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyDetails parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.TopologyDetails prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.TopologyDetails}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.TopologyDetails)
        context.ContextOuterClass.TopologyDetailsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
      }

      // Construct using context.ContextOuterClass.TopologyDetails.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDevicesFieldBuilder();
          getLinksFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (topologyIdBuilder_ == null) {
          topologyId_ = null;
        } else {
          topologyId_ = null;
          topologyIdBuilder_ = null;
        }
        name_ = "";

        if (devicesBuilder_ == null) {
          devices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          devicesBuilder_.clear();
        }
        if (linksBuilder_ == null) {
          links_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          linksBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
        return context.ContextOuterClass.TopologyDetails.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyDetails build() {
        context.ContextOuterClass.TopologyDetails result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyDetails buildPartial() {
        context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this);
        int from_bitField0_ = bitField0_;
        if (topologyIdBuilder_ == null) {
          result.topologyId_ = topologyId_;
        } else {
          result.topologyId_ = topologyIdBuilder_.build();
        }
        result.name_ = name_;
        if (devicesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            devices_ = java.util.Collections.unmodifiableList(devices_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.devices_ = devices_;
        } else {
          result.devices_ = devicesBuilder_.build();
        }
        if (linksBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            links_ = java.util.Collections.unmodifiableList(links_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.links_ = links_;
        } else {
          result.links_ = linksBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.TopologyDetails) {
          return mergeFrom((context.ContextOuterClass.TopologyDetails)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.TopologyDetails other) {
        if (other == context.ContextOuterClass.TopologyDetails.getDefaultInstance()) return this;
        if (other.hasTopologyId()) {
          mergeTopologyId(other.getTopologyId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (devicesBuilder_ == null) {
          if (!other.devices_.isEmpty()) {
            if (devices_.isEmpty()) {
              devices_ = other.devices_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDevicesIsMutable();
              devices_.addAll(other.devices_);
            }
            onChanged();
          }
        } else {
          if (!other.devices_.isEmpty()) {
            if (devicesBuilder_.isEmpty()) {
              devicesBuilder_.dispose();
              devicesBuilder_ = null;
              devices_ = other.devices_;
              bitField0_ = (bitField0_ & ~0x00000001);
              devicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDevicesFieldBuilder() : null;
            } else {
              devicesBuilder_.addAllMessages(other.devices_);
            }
          }
        }
        if (linksBuilder_ == null) {
          if (!other.links_.isEmpty()) {
            if (links_.isEmpty()) {
              links_ = other.links_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureLinksIsMutable();
              links_.addAll(other.links_);
            }
            onChanged();
          }
        } else {
          if (!other.links_.isEmpty()) {
            if (linksBuilder_.isEmpty()) {
              linksBuilder_.dispose();
              linksBuilder_ = null;
              links_ = other.links_;
              bitField0_ = (bitField0_ & ~0x00000002);
              linksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLinksFieldBuilder() : null;
            } else {
              linksBuilder_.addAllMessages(other.links_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.TopologyDetails parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.TopologyDetails) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.TopologyId topologyId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       * @return Whether the topologyId field is set.
       */
      public boolean hasTopologyId() {
        return topologyIdBuilder_ != null || topologyId_ != null;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       * @return The topologyId.
       */
      public context.ContextOuterClass.TopologyId getTopologyId() {
        if (topologyIdBuilder_ == null) {
          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        } else {
          return topologyIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
        if (topologyIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          topologyId_ = value;
          onChanged();
        } else {
          topologyIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder setTopologyId(
          context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdBuilder_ == null) {
          topologyId_ = builderForValue.build();
          onChanged();
        } else {
          topologyIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
        if (topologyIdBuilder_ == null) {
          if (topologyId_ != null) {
            topologyId_ =
              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
          } else {
            topologyId_ = value;
          }
          onChanged();
        } else {
          topologyIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder clearTopologyId() {
        if (topologyIdBuilder_ == null) {
          topologyId_ = null;
          onChanged();
        } else {
          topologyId_ = null;
          topologyIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
        
        onChanged();
        return getTopologyIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
        if (topologyIdBuilder_ != null) {
          return topologyIdBuilder_.getMessageOrBuilder();
        } else {
          return topologyId_ == null ?
              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
          getTopologyIdFieldBuilder() {
        if (topologyIdBuilder_ == null) {
          topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
                  getTopologyId(),
                  getParentForChildren(),
                  isClean());
          topologyId_ = null;
        }
        return topologyIdBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<context.ContextOuterClass.Device> devices_ =
        java.util.Collections.emptyList();
      private void ensureDevicesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;

      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
        if (devicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(devices_);
        } else {
          return devicesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public int getDevicesCount() {
        if (devicesBuilder_ == null) {
          return devices_.size();
        } else {
          return devicesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public context.ContextOuterClass.Device getDevices(int index) {
        if (devicesBuilder_ == null) {
          return devices_.get(index);
        } else {
          return devicesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder setDevices(
          int index, context.ContextOuterClass.Device value) {
        if (devicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDevicesIsMutable();
          devices_.set(index, value);
          onChanged();
        } else {
          devicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder setDevices(
          int index, context.ContextOuterClass.Device.Builder builderForValue) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          devices_.set(index, builderForValue.build());
          onChanged();
        } else {
          devicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder addDevices(context.ContextOuterClass.Device value) {
        if (devicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDevicesIsMutable();
          devices_.add(value);
          onChanged();
        } else {
          devicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder addDevices(
          int index, context.ContextOuterClass.Device value) {
        if (devicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDevicesIsMutable();
          devices_.add(index, value);
          onChanged();
        } else {
          devicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder addDevices(
          context.ContextOuterClass.Device.Builder builderForValue) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          devices_.add(builderForValue.build());
          onChanged();
        } else {
          devicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder addDevices(
          int index, context.ContextOuterClass.Device.Builder builderForValue) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          devices_.add(index, builderForValue.build());
          onChanged();
        } else {
          devicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder addAllDevices(
          java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, devices_);
          onChanged();
        } else {
          devicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder clearDevices() {
        if (devicesBuilder_ == null) {
          devices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          devicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public Builder removeDevices(int index) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          devices_.remove(index);
          onChanged();
        } else {
          devicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public context.ContextOuterClass.Device.Builder getDevicesBuilder(
          int index) {
        return getDevicesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
          int index) {
        if (devicesBuilder_ == null) {
          return devices_.get(index);  } else {
          return devicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
           getDevicesOrBuilderList() {
        if (devicesBuilder_ != null) {
          return devicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(devices_);
        }
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
        return getDevicesFieldBuilder().addBuilder(
            context.ContextOuterClass.Device.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public context.ContextOuterClass.Device.Builder addDevicesBuilder(
          int index) {
        return getDevicesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Device.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Device devices = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.Device.Builder> 
           getDevicesBuilderList() {
        return getDevicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> 
          getDevicesFieldBuilder() {
        if (devicesBuilder_ == null) {
          devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(
                  devices_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          devices_ = null;
        }
        return devicesBuilder_;
      }

      private java.util.List<context.ContextOuterClass.Link> links_ =
        java.util.Collections.emptyList();
      private void ensureLinksIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;

      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.Link> getLinksList() {
        if (linksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(links_);
        } else {
          return linksBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public int getLinksCount() {
        if (linksBuilder_ == null) {
          return links_.size();
        } else {
          return linksBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public context.ContextOuterClass.Link getLinks(int index) {
        if (linksBuilder_ == null) {
          return links_.get(index);
        } else {
          return linksBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder setLinks(
          int index, context.ContextOuterClass.Link value) {
        if (linksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinksIsMutable();
          links_.set(index, value);
          onChanged();
        } else {
          linksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder setLinks(
          int index, context.ContextOuterClass.Link.Builder builderForValue) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          links_.set(index, builderForValue.build());
          onChanged();
        } else {
          linksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder addLinks(context.ContextOuterClass.Link value) {
        if (linksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinksIsMutable();
          links_.add(value);
          onChanged();
        } else {
          linksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder addLinks(
          int index, context.ContextOuterClass.Link value) {
        if (linksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinksIsMutable();
          links_.add(index, value);
          onChanged();
        } else {
          linksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder addLinks(
          context.ContextOuterClass.Link.Builder builderForValue) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          links_.add(builderForValue.build());
          onChanged();
        } else {
          linksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder addLinks(
          int index, context.ContextOuterClass.Link.Builder builderForValue) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          links_.add(index, builderForValue.build());
          onChanged();
        } else {
          linksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder addAllLinks(
          java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, links_);
          onChanged();
        } else {
          linksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder clearLinks() {
        if (linksBuilder_ == null) {
          links_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          linksBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public Builder removeLinks(int index) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          links_.remove(index);
          onChanged();
        } else {
          linksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public context.ContextOuterClass.Link.Builder getLinksBuilder(
          int index) {
        return getLinksFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
          int index) {
        if (linksBuilder_ == null) {
          return links_.get(index);  } else {
          return linksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
           getLinksOrBuilderList() {
        if (linksBuilder_ != null) {
          return linksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(links_);
        }
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public context.ContextOuterClass.Link.Builder addLinksBuilder() {
        return getLinksFieldBuilder().addBuilder(
            context.ContextOuterClass.Link.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public context.ContextOuterClass.Link.Builder addLinksBuilder(
          int index) {
        return getLinksFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Link.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Link links = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.Link.Builder> 
           getLinksBuilderList() {
        return getLinksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> 
          getLinksFieldBuilder() {
        if (linksBuilder_ == null) {
          linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(
                  links_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          links_ = null;
        }
        return linksBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.TopologyDetails)
    }

    // @@protoc_insertion_point(class_scope:context.TopologyDetails)
    private static final context.ContextOuterClass.TopologyDetails DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyDetails();
    }

    public static context.ContextOuterClass.TopologyDetails getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologyIdListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.TopologyIdList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    java.util.List<context.ContextOuterClass.TopologyId> 
        getTopologyIdsList();
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    context.ContextOuterClass.TopologyId getTopologyIds(int index);
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    int getTopologyIdsCount();
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
        getTopologyIdsOrBuilderList();
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.TopologyIdList}
   */
  public static final class TopologyIdList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.TopologyIdList)
      TopologyIdListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TopologyIdList.newBuilder() to construct.
    private TopologyIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TopologyIdList() {
      topologyIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TopologyIdList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TopologyIdList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
                mutable_bitField0_ |= 0x00000001;
              }
              topologyIds_.add(
                  input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
    }

    public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
      return topologyIds_;
    }
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
        getTopologyIdsOrBuilderList() {
      return topologyIds_;
    }
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    @java.lang.Override
    public int getTopologyIdsCount() {
      return topologyIds_.size();
    }
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
      return topologyIds_.get(index);
    }
    /**
     * <code>repeated .context.TopologyId topology_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
        int index) {
      return topologyIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < topologyIds_.size(); i++) {
        output.writeMessage(1, topologyIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < topologyIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, topologyIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.TopologyIdList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj;

      if (!getTopologyIdsList()
          .equals(other.getTopologyIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.TopologyIdList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyIdList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyIdList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyIdList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyIdList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyIdList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyIdList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyIdList 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 context.ContextOuterClass.TopologyIdList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyIdList 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 context.ContextOuterClass.TopologyIdList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyIdList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.TopologyIdList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.TopologyIdList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.TopologyIdList)
        context.ContextOuterClass.TopologyIdListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
      }

      // Construct using context.ContextOuterClass.TopologyIdList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTopologyIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (topologyIdsBuilder_ == null) {
          topologyIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          topologyIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
        return context.ContextOuterClass.TopologyIdList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyIdList build() {
        context.ContextOuterClass.TopologyIdList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyIdList buildPartial() {
        context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this);
        int from_bitField0_ = bitField0_;
        if (topologyIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.topologyIds_ = topologyIds_;
        } else {
          result.topologyIds_ = topologyIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.TopologyIdList) {
          return mergeFrom((context.ContextOuterClass.TopologyIdList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.TopologyIdList other) {
        if (other == context.ContextOuterClass.TopologyIdList.getDefaultInstance()) return this;
        if (topologyIdsBuilder_ == null) {
          if (!other.topologyIds_.isEmpty()) {
            if (topologyIds_.isEmpty()) {
              topologyIds_ = other.topologyIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTopologyIdsIsMutable();
              topologyIds_.addAll(other.topologyIds_);
            }
            onChanged();
          }
        } else {
          if (!other.topologyIds_.isEmpty()) {
            if (topologyIdsBuilder_.isEmpty()) {
              topologyIdsBuilder_.dispose();
              topologyIdsBuilder_ = null;
              topologyIds_ = other.topologyIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              topologyIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTopologyIdsFieldBuilder() : null;
            } else {
              topologyIdsBuilder_.addAllMessages(other.topologyIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.TopologyIdList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.TopologyIdList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ =
        java.util.Collections.emptyList();
      private void ensureTopologyIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;

      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
        if (topologyIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(topologyIds_);
        } else {
          return topologyIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public int getTopologyIdsCount() {
        if (topologyIdsBuilder_ == null) {
          return topologyIds_.size();
        } else {
          return topologyIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
        if (topologyIdsBuilder_ == null) {
          return topologyIds_.get(index);
        } else {
          return topologyIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder setTopologyIds(
          int index, context.ContextOuterClass.TopologyId value) {
        if (topologyIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologyIdsIsMutable();
          topologyIds_.set(index, value);
          onChanged();
        } else {
          topologyIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder setTopologyIds(
          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          topologyIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          topologyIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
        if (topologyIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologyIdsIsMutable();
          topologyIds_.add(value);
          onChanged();
        } else {
          topologyIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder addTopologyIds(
          int index, context.ContextOuterClass.TopologyId value) {
        if (topologyIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologyIdsIsMutable();
          topologyIds_.add(index, value);
          onChanged();
        } else {
          topologyIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder addTopologyIds(
          context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          topologyIds_.add(builderForValue.build());
          onChanged();
        } else {
          topologyIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder addTopologyIds(
          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          topologyIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          topologyIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder addAllTopologyIds(
          java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, topologyIds_);
          onChanged();
        } else {
          topologyIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder clearTopologyIds() {
        if (topologyIdsBuilder_ == null) {
          topologyIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          topologyIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public Builder removeTopologyIds(int index) {
        if (topologyIdsBuilder_ == null) {
          ensureTopologyIdsIsMutable();
          topologyIds_.remove(index);
          onChanged();
        } else {
          topologyIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(
          int index) {
        return getTopologyIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
          int index) {
        if (topologyIdsBuilder_ == null) {
          return topologyIds_.get(index);  } else {
          return topologyIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
           getTopologyIdsOrBuilderList() {
        if (topologyIdsBuilder_ != null) {
          return topologyIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(topologyIds_);
        }
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
        return getTopologyIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.TopologyId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(
          int index) {
        return getTopologyIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.TopologyId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.TopologyId topology_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.TopologyId.Builder> 
           getTopologyIdsBuilderList() {
        return getTopologyIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
          getTopologyIdsFieldBuilder() {
        if (topologyIdsBuilder_ == null) {
          topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
                  topologyIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          topologyIds_ = null;
        }
        return topologyIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.TopologyIdList)
    }

    // @@protoc_insertion_point(class_scope:context.TopologyIdList)
    private static final context.ContextOuterClass.TopologyIdList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyIdList();
    }

    public static context.ContextOuterClass.TopologyIdList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologyListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.TopologyList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    java.util.List<context.ContextOuterClass.Topology> 
        getTopologiesList();
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    context.ContextOuterClass.Topology getTopologies(int index);
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    int getTopologiesCount();
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
        getTopologiesOrBuilderList();
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.TopologyList}
   */
  public static final class TopologyList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.TopologyList)
      TopologyListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TopologyList.newBuilder() to construct.
    private TopologyList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TopologyList() {
      topologies_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TopologyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TopologyList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>();
                mutable_bitField0_ |= 0x00000001;
              }
              topologies_.add(
                  input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          topologies_ = java.util.Collections.unmodifiableList(topologies_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
    }

    public static final int TOPOLOGIES_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.Topology> topologies_;
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
      return topologies_;
    }
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
        getTopologiesOrBuilderList() {
      return topologies_;
    }
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    @java.lang.Override
    public int getTopologiesCount() {
      return topologies_.size();
    }
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Topology getTopologies(int index) {
      return topologies_.get(index);
    }
    /**
     * <code>repeated .context.Topology topologies = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
        int index) {
      return topologies_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < topologies_.size(); i++) {
        output.writeMessage(1, topologies_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < topologies_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, topologies_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.TopologyList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj;

      if (!getTopologiesList()
          .equals(other.getTopologiesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.TopologyList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyList 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 context.ContextOuterClass.TopologyList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyList 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 context.ContextOuterClass.TopologyList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.TopologyList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.TopologyList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.TopologyList)
        context.ContextOuterClass.TopologyListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
      }

      // Construct using context.ContextOuterClass.TopologyList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTopologiesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (topologiesBuilder_ == null) {
          topologies_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          topologiesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
        return context.ContextOuterClass.TopologyList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyList build() {
        context.ContextOuterClass.TopologyList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyList buildPartial() {
        context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this);
        int from_bitField0_ = bitField0_;
        if (topologiesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            topologies_ = java.util.Collections.unmodifiableList(topologies_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.topologies_ = topologies_;
        } else {
          result.topologies_ = topologiesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.TopologyList) {
          return mergeFrom((context.ContextOuterClass.TopologyList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.TopologyList other) {
        if (other == context.ContextOuterClass.TopologyList.getDefaultInstance()) return this;
        if (topologiesBuilder_ == null) {
          if (!other.topologies_.isEmpty()) {
            if (topologies_.isEmpty()) {
              topologies_ = other.topologies_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTopologiesIsMutable();
              topologies_.addAll(other.topologies_);
            }
            onChanged();
          }
        } else {
          if (!other.topologies_.isEmpty()) {
            if (topologiesBuilder_.isEmpty()) {
              topologiesBuilder_.dispose();
              topologiesBuilder_ = null;
              topologies_ = other.topologies_;
              bitField0_ = (bitField0_ & ~0x00000001);
              topologiesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTopologiesFieldBuilder() : null;
            } else {
              topologiesBuilder_.addAllMessages(other.topologies_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.TopologyList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.TopologyList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.Topology> topologies_ =
        java.util.Collections.emptyList();
      private void ensureTopologiesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>(topologies_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> topologiesBuilder_;

      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
        if (topologiesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(topologies_);
        } else {
          return topologiesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public int getTopologiesCount() {
        if (topologiesBuilder_ == null) {
          return topologies_.size();
        } else {
          return topologiesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public context.ContextOuterClass.Topology getTopologies(int index) {
        if (topologiesBuilder_ == null) {
          return topologies_.get(index);
        } else {
          return topologiesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder setTopologies(
          int index, context.ContextOuterClass.Topology value) {
        if (topologiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologiesIsMutable();
          topologies_.set(index, value);
          onChanged();
        } else {
          topologiesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder setTopologies(
          int index, context.ContextOuterClass.Topology.Builder builderForValue) {
        if (topologiesBuilder_ == null) {
          ensureTopologiesIsMutable();
          topologies_.set(index, builderForValue.build());
          onChanged();
        } else {
          topologiesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder addTopologies(context.ContextOuterClass.Topology value) {
        if (topologiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologiesIsMutable();
          topologies_.add(value);
          onChanged();
        } else {
          topologiesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder addTopologies(
          int index, context.ContextOuterClass.Topology value) {
        if (topologiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologiesIsMutable();
          topologies_.add(index, value);
          onChanged();
        } else {
          topologiesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder addTopologies(
          context.ContextOuterClass.Topology.Builder builderForValue) {
        if (topologiesBuilder_ == null) {
          ensureTopologiesIsMutable();
          topologies_.add(builderForValue.build());
          onChanged();
        } else {
          topologiesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder addTopologies(
          int index, context.ContextOuterClass.Topology.Builder builderForValue) {
        if (topologiesBuilder_ == null) {
          ensureTopologiesIsMutable();
          topologies_.add(index, builderForValue.build());
          onChanged();
        } else {
          topologiesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder addAllTopologies(
          java.lang.Iterable<? extends context.ContextOuterClass.Topology> values) {
        if (topologiesBuilder_ == null) {
          ensureTopologiesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, topologies_);
          onChanged();
        } else {
          topologiesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder clearTopologies() {
        if (topologiesBuilder_ == null) {
          topologies_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          topologiesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public Builder removeTopologies(int index) {
        if (topologiesBuilder_ == null) {
          ensureTopologiesIsMutable();
          topologies_.remove(index);
          onChanged();
        } else {
          topologiesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public context.ContextOuterClass.Topology.Builder getTopologiesBuilder(
          int index) {
        return getTopologiesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
          int index) {
        if (topologiesBuilder_ == null) {
          return topologies_.get(index);  } else {
          return topologiesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
           getTopologiesOrBuilderList() {
        if (topologiesBuilder_ != null) {
          return topologiesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(topologies_);
        }
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public context.ContextOuterClass.Topology.Builder addTopologiesBuilder() {
        return getTopologiesFieldBuilder().addBuilder(
            context.ContextOuterClass.Topology.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public context.ContextOuterClass.Topology.Builder addTopologiesBuilder(
          int index) {
        return getTopologiesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Topology.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Topology topologies = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Topology.Builder> 
           getTopologiesBuilderList() {
        return getTopologiesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> 
          getTopologiesFieldBuilder() {
        if (topologiesBuilder_ == null) {
          topologiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder>(
                  topologies_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          topologies_ = null;
        }
        return topologiesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.TopologyList)
    }

    // @@protoc_insertion_point(class_scope:context.TopologyList)
    private static final context.ContextOuterClass.TopologyList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyList();
    }

    public static context.ContextOuterClass.TopologyList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologyEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.TopologyEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    boolean hasEvent();
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    context.ContextOuterClass.Event getEvent();
    /**
     * <code>.context.Event event = 1;</code>
     */
    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

    /**
     * <code>.context.TopologyId topology_id = 2;</code>
     * @return Whether the topologyId field is set.
     */
    boolean hasTopologyId();
    /**
     * <code>.context.TopologyId topology_id = 2;</code>
     * @return The topologyId.
     */
    context.ContextOuterClass.TopologyId getTopologyId();
    /**
     * <code>.context.TopologyId topology_id = 2;</code>
     */
    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
  }
  /**
   * Protobuf type {@code context.TopologyEvent}
   */
  public static final class TopologyEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.TopologyEvent)
      TopologyEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TopologyEvent.newBuilder() to construct.
    private TopologyEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TopologyEvent() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TopologyEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TopologyEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Event.Builder subBuilder = null;
              if (event_ != null) {
                subBuilder = event_.toBuilder();
              }
              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(event_);
                event_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
              if (topologyId_ != null) {
                subBuilder = topologyId_.toBuilder();
              }
              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(topologyId_);
                topologyId_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
    }

    public static final int EVENT_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Event event_;
    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    @java.lang.Override
    public boolean hasEvent() {
      return event_ != null;
    }
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    @java.lang.Override
    public context.ContextOuterClass.Event getEvent() {
      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
    }
    /**
     * <code>.context.Event event = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
      return getEvent();
    }

    public static final int TOPOLOGY_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.TopologyId topologyId_;
    /**
     * <code>.context.TopologyId topology_id = 2;</code>
     * @return Whether the topologyId field is set.
     */
    @java.lang.Override
    public boolean hasTopologyId() {
      return topologyId_ != null;
    }
    /**
     * <code>.context.TopologyId topology_id = 2;</code>
     * @return The topologyId.
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyId getTopologyId() {
      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
    }
    /**
     * <code>.context.TopologyId topology_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
      return getTopologyId();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (event_ != null) {
        output.writeMessage(1, getEvent());
      }
      if (topologyId_ != null) {
        output.writeMessage(2, getTopologyId());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (event_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEvent());
      }
      if (topologyId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTopologyId());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.TopologyEvent)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.TopologyEvent other = (context.ContextOuterClass.TopologyEvent) obj;

      if (hasEvent() != other.hasEvent()) return false;
      if (hasEvent()) {
        if (!getEvent()
            .equals(other.getEvent())) return false;
      }
      if (hasTopologyId() != other.hasTopologyId()) return false;
      if (hasTopologyId()) {
        if (!getTopologyId()
            .equals(other.getTopologyId())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEvent()) {
        hash = (37 * hash) + EVENT_FIELD_NUMBER;
        hash = (53 * hash) + getEvent().hashCode();
      }
      if (hasTopologyId()) {
        hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTopologyId().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.TopologyEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TopologyEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TopologyEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyEvent 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 context.ContextOuterClass.TopologyEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyEvent 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 context.ContextOuterClass.TopologyEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TopologyEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.TopologyEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.TopologyEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.TopologyEvent)
        context.ContextOuterClass.TopologyEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
      }

      // Construct using context.ContextOuterClass.TopologyEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (eventBuilder_ == null) {
          event_ = null;
        } else {
          event_ = null;
          eventBuilder_ = null;
        }
        if (topologyIdBuilder_ == null) {
          topologyId_ = null;
        } else {
          topologyId_ = null;
          topologyIdBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
        return context.ContextOuterClass.TopologyEvent.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyEvent build() {
        context.ContextOuterClass.TopologyEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.TopologyEvent buildPartial() {
        context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this);
        if (eventBuilder_ == null) {
          result.event_ = event_;
        } else {
          result.event_ = eventBuilder_.build();
        }
        if (topologyIdBuilder_ == null) {
          result.topologyId_ = topologyId_;
        } else {
          result.topologyId_ = topologyIdBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.TopologyEvent) {
          return mergeFrom((context.ContextOuterClass.TopologyEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.TopologyEvent other) {
        if (other == context.ContextOuterClass.TopologyEvent.getDefaultInstance()) return this;
        if (other.hasEvent()) {
          mergeEvent(other.getEvent());
        }
        if (other.hasTopologyId()) {
          mergeTopologyId(other.getTopologyId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.TopologyEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.TopologyEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Event event_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
      /**
       * <code>.context.Event event = 1;</code>
       * @return Whether the event field is set.
       */
      public boolean hasEvent() {
        return eventBuilder_ != null || event_ != null;
      }
      /**
       * <code>.context.Event event = 1;</code>
       * @return The event.
       */
      public context.ContextOuterClass.Event getEvent() {
        if (eventBuilder_ == null) {
          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        } else {
          return eventBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          eventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(
          context.ContextOuterClass.Event.Builder builderForValue) {
        if (eventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          eventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder mergeEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (event_ != null) {
            event_ =
              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          eventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder clearEvent() {
        if (eventBuilder_ == null) {
          event_ = null;
          onChanged();
        } else {
          event_ = null;
          eventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.Event.Builder getEventBuilder() {
        
        onChanged();
        return getEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
        if (eventBuilder_ != null) {
          return eventBuilder_.getMessageOrBuilder();
        } else {
          return event_ == null ?
              context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
          getEventFieldBuilder() {
        if (eventBuilder_ == null) {
          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
                  getEvent(),
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        return eventBuilder_;
      }

      private context.ContextOuterClass.TopologyId topologyId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       * @return Whether the topologyId field is set.
       */
      public boolean hasTopologyId() {
        return topologyIdBuilder_ != null || topologyId_ != null;
      }
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       * @return The topologyId.
       */
      public context.ContextOuterClass.TopologyId getTopologyId() {
        if (topologyIdBuilder_ == null) {
          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        } else {
          return topologyIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       */
      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
        if (topologyIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          topologyId_ = value;
          onChanged();
        } else {
          topologyIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       */
      public Builder setTopologyId(
          context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdBuilder_ == null) {
          topologyId_ = builderForValue.build();
          onChanged();
        } else {
          topologyIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       */
      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
        if (topologyIdBuilder_ == null) {
          if (topologyId_ != null) {
            topologyId_ =
              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
          } else {
            topologyId_ = value;
          }
          onChanged();
        } else {
          topologyIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       */
      public Builder clearTopologyId() {
        if (topologyIdBuilder_ == null) {
          topologyId_ = null;
          onChanged();
        } else {
          topologyId_ = null;
          topologyIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
        
        onChanged();
        return getTopologyIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       */
      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
        if (topologyIdBuilder_ != null) {
          return topologyIdBuilder_.getMessageOrBuilder();
        } else {
          return topologyId_ == null ?
              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }
      }
      /**
       * <code>.context.TopologyId topology_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
          getTopologyIdFieldBuilder() {
        if (topologyIdBuilder_ == null) {
          topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
                  getTopologyId(),
                  getParentForChildren(),
                  isClean());
          topologyId_ = null;
        }
        return topologyIdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.TopologyEvent)
    }

    // @@protoc_insertion_point(class_scope:context.TopologyEvent)
    private static final context.ContextOuterClass.TopologyEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyEvent();
    }

    public static context.ContextOuterClass.TopologyEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.DeviceId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Uuid device_uuid = 1;</code>
     * @return Whether the deviceUuid field is set.
     */
    boolean hasDeviceUuid();
    /**
     * <code>.context.Uuid device_uuid = 1;</code>
     * @return The deviceUuid.
     */
    context.ContextOuterClass.Uuid getDeviceUuid();
    /**
     * <code>.context.Uuid device_uuid = 1;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder();
  }
  /**
   * <pre>
   * ----- Device --------------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.DeviceId}
   */
  public static final class DeviceId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.DeviceId)
      DeviceIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceId.newBuilder() to construct.
    private DeviceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeviceId();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeviceId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (deviceUuid_ != null) {
                subBuilder = deviceUuid_.toBuilder();
              }
              deviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceUuid_);
                deviceUuid_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
    }

    public static final int DEVICE_UUID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Uuid deviceUuid_;
    /**
     * <code>.context.Uuid device_uuid = 1;</code>
     * @return Whether the deviceUuid field is set.
     */
    @java.lang.Override
    public boolean hasDeviceUuid() {
      return deviceUuid_ != null;
    }
    /**
     * <code>.context.Uuid device_uuid = 1;</code>
     * @return The deviceUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getDeviceUuid() {
      return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
    }
    /**
     * <code>.context.Uuid device_uuid = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
      return getDeviceUuid();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (deviceUuid_ != null) {
        output.writeMessage(1, getDeviceUuid());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (deviceUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getDeviceUuid());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.DeviceId)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.DeviceId other = (context.ContextOuterClass.DeviceId) obj;

      if (hasDeviceUuid() != other.hasDeviceUuid()) return false;
      if (hasDeviceUuid()) {
        if (!getDeviceUuid()
            .equals(other.getDeviceUuid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.DeviceId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceId 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 context.ContextOuterClass.DeviceId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceId 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 context.ContextOuterClass.DeviceId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.DeviceId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Device --------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.DeviceId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.DeviceId)
        context.ContextOuterClass.DeviceIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
      }

      // Construct using context.ContextOuterClass.DeviceId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (deviceUuidBuilder_ == null) {
          deviceUuid_ = null;
        } else {
          deviceUuid_ = null;
          deviceUuidBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
        return context.ContextOuterClass.DeviceId.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceId build() {
        context.ContextOuterClass.DeviceId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceId buildPartial() {
        context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this);
        if (deviceUuidBuilder_ == null) {
          result.deviceUuid_ = deviceUuid_;
        } else {
          result.deviceUuid_ = deviceUuidBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.DeviceId) {
          return mergeFrom((context.ContextOuterClass.DeviceId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.DeviceId other) {
        if (other == context.ContextOuterClass.DeviceId.getDefaultInstance()) return this;
        if (other.hasDeviceUuid()) {
          mergeDeviceUuid(other.getDeviceUuid());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.DeviceId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.DeviceId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Uuid deviceUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> deviceUuidBuilder_;
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       * @return Whether the deviceUuid field is set.
       */
      public boolean hasDeviceUuid() {
        return deviceUuidBuilder_ != null || deviceUuid_ != null;
      }
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       * @return The deviceUuid.
       */
      public context.ContextOuterClass.Uuid getDeviceUuid() {
        if (deviceUuidBuilder_ == null) {
          return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
        } else {
          return deviceUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       */
      public Builder setDeviceUuid(context.ContextOuterClass.Uuid value) {
        if (deviceUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceUuid_ = value;
          onChanged();
        } else {
          deviceUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       */
      public Builder setDeviceUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (deviceUuidBuilder_ == null) {
          deviceUuid_ = builderForValue.build();
          onChanged();
        } else {
          deviceUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       */
      public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) {
        if (deviceUuidBuilder_ == null) {
          if (deviceUuid_ != null) {
            deviceUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(deviceUuid_).mergeFrom(value).buildPartial();
          } else {
            deviceUuid_ = value;
          }
          onChanged();
        } else {
          deviceUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       */
      public Builder clearDeviceUuid() {
        if (deviceUuidBuilder_ == null) {
          deviceUuid_ = null;
          onChanged();
        } else {
          deviceUuid_ = null;
          deviceUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() {
        
        onChanged();
        return getDeviceUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
        if (deviceUuidBuilder_ != null) {
          return deviceUuidBuilder_.getMessageOrBuilder();
        } else {
          return deviceUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
        }
      }
      /**
       * <code>.context.Uuid device_uuid = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getDeviceUuidFieldBuilder() {
        if (deviceUuidBuilder_ == null) {
          deviceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getDeviceUuid(),
                  getParentForChildren(),
                  isClean());
          deviceUuid_ = null;
        }
        return deviceUuidBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.DeviceId)
    }

    // @@protoc_insertion_point(class_scope:context.DeviceId)
    private static final context.ContextOuterClass.DeviceId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceId();
    }

    public static context.ContextOuterClass.DeviceId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Device)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.DeviceId device_id = 1;</code>
     * @return Whether the deviceId field is set.
     */
    boolean hasDeviceId();
    /**
     * <code>.context.DeviceId device_id = 1;</code>
     * @return The deviceId.
     */
    context.ContextOuterClass.DeviceId getDeviceId();
    /**
     * <code>.context.DeviceId device_id = 1;</code>
     */
    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>string device_type = 3;</code>
     * @return The deviceType.
     */
    java.lang.String getDeviceType();
    /**
     * <code>string device_type = 3;</code>
     * @return The bytes for deviceType.
     */
    com.google.protobuf.ByteString
        getDeviceTypeBytes();

    /**
     * <code>.context.DeviceConfig device_config = 4;</code>
     * @return Whether the deviceConfig field is set.
     */
    boolean hasDeviceConfig();
    /**
     * <code>.context.DeviceConfig device_config = 4;</code>
     * @return The deviceConfig.
     */
    context.ContextOuterClass.DeviceConfig getDeviceConfig();
    /**
     * <code>.context.DeviceConfig device_config = 4;</code>
     */
    context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder();

    /**
     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
     * @return The enum numeric value on the wire for deviceOperationalStatus.
     */
    int getDeviceOperationalStatusValue();
    /**
     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
     * @return The deviceOperationalStatus.
     */
    context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus();

    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @return A list containing the deviceDrivers.
     */
    java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList();
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @return The count of deviceDrivers.
     */
    int getDeviceDriversCount();
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @param index The index of the element to return.
     * @return The deviceDrivers at the given index.
     */
    context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index);
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @return A list containing the enum numeric values on the wire for deviceDrivers.
     */
    java.util.List<java.lang.Integer>
    getDeviceDriversValueList();
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of deviceDrivers at the given index.
     */
    int getDeviceDriversValue(int index);

    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    java.util.List<context.ContextOuterClass.EndPoint> 
        getDeviceEndpointsList();
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    context.ContextOuterClass.EndPoint getDeviceEndpoints(int index);
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    int getDeviceEndpointsCount();
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> 
        getDeviceEndpointsOrBuilderList();
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(
        int index);

    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    java.util.List<context.ContextOuterClass.Component> 
        getComponentList();
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    context.ContextOuterClass.Component getComponent(int index);
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    int getComponentCount();
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
        getComponentOrBuilderList();
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.Device}
   */
  public static final class Device extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Device)
      DeviceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Device.newBuilder() to construct.
    private Device(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Device() {
      name_ = "";
      deviceType_ = "";
      deviceOperationalStatus_ = 0;
      deviceDrivers_ = java.util.Collections.emptyList();
      deviceEndpoints_ = java.util.Collections.emptyList();
      component_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Device();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Device(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
              if (deviceId_ != null) {
                subBuilder = deviceId_.toBuilder();
              }
              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceId_);
                deviceId_ = subBuilder.buildPartial();
              }

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

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

              deviceType_ = s;
              break;
            }
            case 34: {
              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
              if (deviceConfig_ != null) {
                subBuilder = deviceConfig_.toBuilder();
              }
              deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceConfig_);
                deviceConfig_ = subBuilder.buildPartial();
              }

              break;
            }
            case 40: {
              int rawValue = input.readEnum();

              deviceOperationalStatus_ = rawValue;
              break;
            }
            case 48: {
              int rawValue = input.readEnum();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              deviceDrivers_.add(rawValue);
              break;
            }
            case 50: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000001;
                }
                deviceDrivers_.add(rawValue);
              }
              input.popLimit(oldLimit);
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>();
                mutable_bitField0_ |= 0x00000002;
              }
              deviceEndpoints_.add(
                  input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry));
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                component_ = new java.util.ArrayList<context.ContextOuterClass.Component>();
                mutable_bitField0_ |= 0x00000004;
              }
              component_.add(
                  input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
        }
        if (((mutable_bitField0_ & 0x00000004) != 0)) {
          component_ = java.util.Collections.unmodifiableList(component_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Device_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
    }

    public static final int DEVICE_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.DeviceId deviceId_;
    /**
     * <code>.context.DeviceId device_id = 1;</code>
     * @return Whether the deviceId field is set.
     */
    @java.lang.Override
    public boolean hasDeviceId() {
      return deviceId_ != null;
    }
    /**
     * <code>.context.DeviceId device_id = 1;</code>
     * @return The deviceId.
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceId getDeviceId() {
      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
    }
    /**
     * <code>.context.DeviceId device_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
      return getDeviceId();
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEVICE_TYPE_FIELD_NUMBER = 3;
    private volatile java.lang.Object deviceType_;
    /**
     * <code>string device_type = 3;</code>
     * @return The deviceType.
     */
    @java.lang.Override
    public java.lang.String getDeviceType() {
      java.lang.Object ref = deviceType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        deviceType_ = s;
        return s;
      }
    }
    /**
     * <code>string device_type = 3;</code>
     * @return The bytes for deviceType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDeviceTypeBytes() {
      java.lang.Object ref = deviceType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deviceType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEVICE_CONFIG_FIELD_NUMBER = 4;
    private context.ContextOuterClass.DeviceConfig deviceConfig_;
    /**
     * <code>.context.DeviceConfig device_config = 4;</code>
     * @return Whether the deviceConfig field is set.
     */
    @java.lang.Override
    public boolean hasDeviceConfig() {
      return deviceConfig_ != null;
    }
    /**
     * <code>.context.DeviceConfig device_config = 4;</code>
     * @return The deviceConfig.
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
      return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
    }
    /**
     * <code>.context.DeviceConfig device_config = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
      return getDeviceConfig();
    }

    public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5;
    private int deviceOperationalStatus_;
    /**
     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
     * @return The enum numeric value on the wire for deviceOperationalStatus.
     */
    @java.lang.Override public int getDeviceOperationalStatusValue() {
      return deviceOperationalStatus_;
    }
    /**
     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
     * @return The deviceOperationalStatus.
     */
    @java.lang.Override public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
      @SuppressWarnings("deprecation")
      context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
      return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
    }

    public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6;
    private java.util.List<java.lang.Integer> deviceDrivers_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum> deviceDrivers_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>() {
              public context.ContextOuterClass.DeviceDriverEnum convert(java.lang.Integer from) {
                @SuppressWarnings("deprecation")
                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.valueOf(from);
                return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result;
              }
            };
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @return A list containing the deviceDrivers.
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>(deviceDrivers_, deviceDrivers_converter_);
    }
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @return The count of deviceDrivers.
     */
    @java.lang.Override
    public int getDeviceDriversCount() {
      return deviceDrivers_.size();
    }
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @param index The index of the element to return.
     * @return The deviceDrivers at the given index.
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index) {
      return deviceDrivers_converter_.convert(deviceDrivers_.get(index));
    }
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @return A list containing the enum numeric values on the wire for deviceDrivers.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
    getDeviceDriversValueList() {
      return deviceDrivers_;
    }
    /**
     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of deviceDrivers at the given index.
     */
    @java.lang.Override
    public int getDeviceDriversValue(int index) {
      return deviceDrivers_.get(index);
    }
    private int deviceDriversMemoizedSerializedSize;

    public static final int DEVICE_ENDPOINTS_FIELD_NUMBER = 7;
    private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_;
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
      return deviceEndpoints_;
    }
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> 
        getDeviceEndpointsOrBuilderList() {
      return deviceEndpoints_;
    }
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    @java.lang.Override
    public int getDeviceEndpointsCount() {
      return deviceEndpoints_.size();
    }
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
      return deviceEndpoints_.get(index);
    }
    /**
     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(
        int index) {
      return deviceEndpoints_.get(index);
    }

    public static final int COMPONENT_FIELD_NUMBER = 8;
    private java.util.List<context.ContextOuterClass.Component> component_;
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Component> getComponentList() {
      return component_;
    }
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
        getComponentOrBuilderList() {
      return component_;
    }
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    @java.lang.Override
    public int getComponentCount() {
      return component_.size();
    }
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Component getComponent(int index) {
      return component_.get(index);
    }
    /**
     * <pre>
     * Used for inventory
     * </pre>
     *
     * <code>repeated .context.Component component = 8;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
        int index) {
      return component_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (deviceId_ != null) {
        output.writeMessage(1, getDeviceId());
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!getDeviceTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deviceType_);
      }
      if (deviceConfig_ != null) {
        output.writeMessage(4, getDeviceConfig());
      }
      if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
        output.writeEnum(5, deviceOperationalStatus_);
      }
      if (getDeviceDriversList().size() > 0) {
        output.writeUInt32NoTag(50);
        output.writeUInt32NoTag(deviceDriversMemoizedSerializedSize);
      }
      for (int i = 0; i < deviceDrivers_.size(); i++) {
        output.writeEnumNoTag(deviceDrivers_.get(i));
      }
      for (int i = 0; i < deviceEndpoints_.size(); i++) {
        output.writeMessage(7, deviceEndpoints_.get(i));
      }
      for (int i = 0; i < component_.size(); i++) {
        output.writeMessage(8, component_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (deviceId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getDeviceId());
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!getDeviceTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deviceType_);
      }
      if (deviceConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getDeviceConfig());
      }
      if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, deviceOperationalStatus_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < deviceDrivers_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(deviceDrivers_.get(i));
        }
        size += dataSize;
        if (!getDeviceDriversList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }deviceDriversMemoizedSerializedSize = dataSize;
      }
      for (int i = 0; i < deviceEndpoints_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, deviceEndpoints_.get(i));
      }
      for (int i = 0; i < component_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, component_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Device)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Device other = (context.ContextOuterClass.Device) obj;

      if (hasDeviceId() != other.hasDeviceId()) return false;
      if (hasDeviceId()) {
        if (!getDeviceId()
            .equals(other.getDeviceId())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (!getDeviceType()
          .equals(other.getDeviceType())) return false;
      if (hasDeviceConfig() != other.hasDeviceConfig()) return false;
      if (hasDeviceConfig()) {
        if (!getDeviceConfig()
            .equals(other.getDeviceConfig())) return false;
      }
      if (deviceOperationalStatus_ != other.deviceOperationalStatus_) return false;
      if (!deviceDrivers_.equals(other.deviceDrivers_)) return false;
      if (!getDeviceEndpointsList()
          .equals(other.getDeviceEndpointsList())) return false;
      if (!getComponentList()
          .equals(other.getComponentList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDeviceId()) {
        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceId().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DEVICE_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getDeviceType().hashCode();
      if (hasDeviceConfig()) {
        hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceConfig().hashCode();
      }
      hash = (37 * hash) + DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER;
      hash = (53 * hash) + deviceOperationalStatus_;
      if (getDeviceDriversCount() > 0) {
        hash = (37 * hash) + DEVICE_DRIVERS_FIELD_NUMBER;
        hash = (53 * hash) + deviceDrivers_.hashCode();
      }
      if (getDeviceEndpointsCount() > 0) {
        hash = (37 * hash) + DEVICE_ENDPOINTS_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceEndpointsList().hashCode();
      }
      if (getComponentCount() > 0) {
        hash = (37 * hash) + COMPONENT_FIELD_NUMBER;
        hash = (53 * hash) + getComponentList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Device parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Device parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Device parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Device parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Device parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Device parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Device parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Device 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 context.ContextOuterClass.Device parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Device 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 context.ContextOuterClass.Device parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Device parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Device prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Device}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Device)
        context.ContextOuterClass.DeviceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Device_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
      }

      // Construct using context.ContextOuterClass.Device.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDeviceEndpointsFieldBuilder();
          getComponentFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (deviceIdBuilder_ == null) {
          deviceId_ = null;
        } else {
          deviceId_ = null;
          deviceIdBuilder_ = null;
        }
        name_ = "";

        deviceType_ = "";

        if (deviceConfigBuilder_ == null) {
          deviceConfig_ = null;
        } else {
          deviceConfig_ = null;
          deviceConfigBuilder_ = null;
        }
        deviceOperationalStatus_ = 0;

        deviceDrivers_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        if (deviceEndpointsBuilder_ == null) {
          deviceEndpoints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          deviceEndpointsBuilder_.clear();
        }
        if (componentBuilder_ == null) {
          component_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          componentBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Device_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Device getDefaultInstanceForType() {
        return context.ContextOuterClass.Device.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Device build() {
        context.ContextOuterClass.Device result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Device buildPartial() {
        context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this);
        int from_bitField0_ = bitField0_;
        if (deviceIdBuilder_ == null) {
          result.deviceId_ = deviceId_;
        } else {
          result.deviceId_ = deviceIdBuilder_.build();
        }
        result.name_ = name_;
        result.deviceType_ = deviceType_;
        if (deviceConfigBuilder_ == null) {
          result.deviceConfig_ = deviceConfig_;
        } else {
          result.deviceConfig_ = deviceConfigBuilder_.build();
        }
        result.deviceOperationalStatus_ = deviceOperationalStatus_;
        if (((bitField0_ & 0x00000001) != 0)) {
          deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.deviceDrivers_ = deviceDrivers_;
        if (deviceEndpointsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.deviceEndpoints_ = deviceEndpoints_;
        } else {
          result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
        }
        if (componentBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            component_ = java.util.Collections.unmodifiableList(component_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.component_ = component_;
        } else {
          result.component_ = componentBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Device) {
          return mergeFrom((context.ContextOuterClass.Device)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Device other) {
        if (other == context.ContextOuterClass.Device.getDefaultInstance()) return this;
        if (other.hasDeviceId()) {
          mergeDeviceId(other.getDeviceId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getDeviceType().isEmpty()) {
          deviceType_ = other.deviceType_;
          onChanged();
        }
        if (other.hasDeviceConfig()) {
          mergeDeviceConfig(other.getDeviceConfig());
        }
        if (other.deviceOperationalStatus_ != 0) {
          setDeviceOperationalStatusValue(other.getDeviceOperationalStatusValue());
        }
        if (!other.deviceDrivers_.isEmpty()) {
          if (deviceDrivers_.isEmpty()) {
            deviceDrivers_ = other.deviceDrivers_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDeviceDriversIsMutable();
            deviceDrivers_.addAll(other.deviceDrivers_);
          }
          onChanged();
        }
        if (deviceEndpointsBuilder_ == null) {
          if (!other.deviceEndpoints_.isEmpty()) {
            if (deviceEndpoints_.isEmpty()) {
              deviceEndpoints_ = other.deviceEndpoints_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureDeviceEndpointsIsMutable();
              deviceEndpoints_.addAll(other.deviceEndpoints_);
            }
            onChanged();
          }
        } else {
          if (!other.deviceEndpoints_.isEmpty()) {
            if (deviceEndpointsBuilder_.isEmpty()) {
              deviceEndpointsBuilder_.dispose();
              deviceEndpointsBuilder_ = null;
              deviceEndpoints_ = other.deviceEndpoints_;
              bitField0_ = (bitField0_ & ~0x00000002);
              deviceEndpointsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDeviceEndpointsFieldBuilder() : null;
            } else {
              deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_);
            }
          }
        }
        if (componentBuilder_ == null) {
          if (!other.component_.isEmpty()) {
            if (component_.isEmpty()) {
              component_ = other.component_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureComponentIsMutable();
              component_.addAll(other.component_);
            }
            onChanged();
          }
        } else {
          if (!other.component_.isEmpty()) {
            if (componentBuilder_.isEmpty()) {
              componentBuilder_.dispose();
              componentBuilder_ = null;
              component_ = other.component_;
              bitField0_ = (bitField0_ & ~0x00000004);
              componentBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getComponentFieldBuilder() : null;
            } else {
              componentBuilder_.addAllMessages(other.component_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Device parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Device) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.DeviceId deviceId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       * @return Whether the deviceId field is set.
       */
      public boolean hasDeviceId() {
        return deviceIdBuilder_ != null || deviceId_ != null;
      }
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       * @return The deviceId.
       */
      public context.ContextOuterClass.DeviceId getDeviceId() {
        if (deviceIdBuilder_ == null) {
          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        } else {
          return deviceIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       */
      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
        if (deviceIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceId_ = value;
          onChanged();
        } else {
          deviceIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       */
      public Builder setDeviceId(
          context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdBuilder_ == null) {
          deviceId_ = builderForValue.build();
          onChanged();
        } else {
          deviceIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       */
      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
        if (deviceIdBuilder_ == null) {
          if (deviceId_ != null) {
            deviceId_ =
              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
          } else {
            deviceId_ = value;
          }
          onChanged();
        } else {
          deviceIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       */
      public Builder clearDeviceId() {
        if (deviceIdBuilder_ == null) {
          deviceId_ = null;
          onChanged();
        } else {
          deviceId_ = null;
          deviceIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
        
        onChanged();
        return getDeviceIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       */
      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
        if (deviceIdBuilder_ != null) {
          return deviceIdBuilder_.getMessageOrBuilder();
        } else {
          return deviceId_ == null ?
              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }
      }
      /**
       * <code>.context.DeviceId device_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
          getDeviceIdFieldBuilder() {
        if (deviceIdBuilder_ == null) {
          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
                  getDeviceId(),
                  getParentForChildren(),
                  isClean());
          deviceId_ = null;
        }
        return deviceIdBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object deviceType_ = "";
      /**
       * <code>string device_type = 3;</code>
       * @return The deviceType.
       */
      public java.lang.String getDeviceType() {
        java.lang.Object ref = deviceType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          deviceType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string device_type = 3;</code>
       * @return The bytes for deviceType.
       */
      public com.google.protobuf.ByteString
          getDeviceTypeBytes() {
        java.lang.Object ref = deviceType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deviceType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string device_type = 3;</code>
       * @param value The deviceType to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        deviceType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string device_type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceType() {
        
        deviceType_ = getDefaultInstance().getDeviceType();
        onChanged();
        return this;
      }
      /**
       * <code>string device_type = 3;</code>
       * @param value The bytes for deviceType to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        deviceType_ = value;
        onChanged();
        return this;
      }

      private context.ContextOuterClass.DeviceConfig deviceConfig_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_;
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       * @return Whether the deviceConfig field is set.
       */
      public boolean hasDeviceConfig() {
        return deviceConfigBuilder_ != null || deviceConfig_ != null;
      }
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       * @return The deviceConfig.
       */
      public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
        if (deviceConfigBuilder_ == null) {
          return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
        } else {
          return deviceConfigBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       */
      public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
        if (deviceConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceConfig_ = value;
          onChanged();
        } else {
          deviceConfigBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       */
      public Builder setDeviceConfig(
          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
        if (deviceConfigBuilder_ == null) {
          deviceConfig_ = builderForValue.build();
          onChanged();
        } else {
          deviceConfigBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       */
      public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
        if (deviceConfigBuilder_ == null) {
          if (deviceConfig_ != null) {
            deviceConfig_ =
              context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
          } else {
            deviceConfig_ = value;
          }
          onChanged();
        } else {
          deviceConfigBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       */
      public Builder clearDeviceConfig() {
        if (deviceConfigBuilder_ == null) {
          deviceConfig_ = null;
          onChanged();
        } else {
          deviceConfig_ = null;
          deviceConfigBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       */
      public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
        
        onChanged();
        return getDeviceConfigFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       */
      public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
        if (deviceConfigBuilder_ != null) {
          return deviceConfigBuilder_.getMessageOrBuilder();
        } else {
          return deviceConfig_ == null ?
              context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
        }
      }
      /**
       * <code>.context.DeviceConfig device_config = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> 
          getDeviceConfigFieldBuilder() {
        if (deviceConfigBuilder_ == null) {
          deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(
                  getDeviceConfig(),
                  getParentForChildren(),
                  isClean());
          deviceConfig_ = null;
        }
        return deviceConfigBuilder_;
      }

      private int deviceOperationalStatus_ = 0;
      /**
       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
       * @return The enum numeric value on the wire for deviceOperationalStatus.
       */
      @java.lang.Override public int getDeviceOperationalStatusValue() {
        return deviceOperationalStatus_;
      }
      /**
       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
       * @param value The enum numeric value on the wire for deviceOperationalStatus to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceOperationalStatusValue(int value) {
        
        deviceOperationalStatus_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
       * @return The deviceOperationalStatus.
       */
      @java.lang.Override
      public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
        @SuppressWarnings("deprecation")
        context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
        return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
      }
      /**
       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
       * @param value The deviceOperationalStatus to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceOperationalStatus(context.ContextOuterClass.DeviceOperationalStatusEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        deviceOperationalStatus_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceOperationalStatus() {
        
        deviceOperationalStatus_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> deviceDrivers_ =
        java.util.Collections.emptyList();
      private void ensureDeviceDriversIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>(deviceDrivers_);
          bitField0_ |= 0x00000001;
        }
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @return A list containing the deviceDrivers.
       */
      public java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>(deviceDrivers_, deviceDrivers_converter_);
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @return The count of deviceDrivers.
       */
      public int getDeviceDriversCount() {
        return deviceDrivers_.size();
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @param index The index of the element to return.
       * @return The deviceDrivers at the given index.
       */
      public context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index) {
        return deviceDrivers_converter_.convert(deviceDrivers_.get(index));
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @param index The index to set the value at.
       * @param value The deviceDrivers to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceDrivers(
          int index, context.ContextOuterClass.DeviceDriverEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDeviceDriversIsMutable();
        deviceDrivers_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @param value The deviceDrivers to add.
       * @return This builder for chaining.
       */
      public Builder addDeviceDrivers(context.ContextOuterClass.DeviceDriverEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDeviceDriversIsMutable();
        deviceDrivers_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @param values The deviceDrivers to add.
       * @return This builder for chaining.
       */
      public Builder addAllDeviceDrivers(
          java.lang.Iterable<? extends context.ContextOuterClass.DeviceDriverEnum> values) {
        ensureDeviceDriversIsMutable();
        for (context.ContextOuterClass.DeviceDriverEnum value : values) {
          deviceDrivers_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceDrivers() {
        deviceDrivers_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @return A list containing the enum numeric values on the wire for deviceDrivers.
       */
      public java.util.List<java.lang.Integer>
      getDeviceDriversValueList() {
        return java.util.Collections.unmodifiableList(deviceDrivers_);
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of deviceDrivers at the given index.
       */
      public int getDeviceDriversValue(int index) {
        return deviceDrivers_.get(index);
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of deviceDrivers at the given index.
       * @return This builder for chaining.
       */
      public Builder setDeviceDriversValue(
          int index, int value) {
        ensureDeviceDriversIsMutable();
        deviceDrivers_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @param value The enum numeric value on the wire for deviceDrivers to add.
       * @return This builder for chaining.
       */
      public Builder addDeviceDriversValue(int value) {
        ensureDeviceDriversIsMutable();
        deviceDrivers_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
       * @param values The enum numeric values on the wire for deviceDrivers to add.
       * @return This builder for chaining.
       */
      public Builder addAllDeviceDriversValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureDeviceDriversIsMutable();
        for (int value : values) {
          deviceDrivers_.add(value);
        }
        onChanged();
        return this;
      }

      private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_ =
        java.util.Collections.emptyList();
      private void ensureDeviceEndpointsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>(deviceEndpoints_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> deviceEndpointsBuilder_;

      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
        if (deviceEndpointsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(deviceEndpoints_);
        } else {
          return deviceEndpointsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public int getDeviceEndpointsCount() {
        if (deviceEndpointsBuilder_ == null) {
          return deviceEndpoints_.size();
        } else {
          return deviceEndpointsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
        if (deviceEndpointsBuilder_ == null) {
          return deviceEndpoints_.get(index);
        } else {
          return deviceEndpointsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder setDeviceEndpoints(
          int index, context.ContextOuterClass.EndPoint value) {
        if (deviceEndpointsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceEndpointsIsMutable();
          deviceEndpoints_.set(index, value);
          onChanged();
        } else {
          deviceEndpointsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder setDeviceEndpoints(
          int index, context.ContextOuterClass.EndPoint.Builder builderForValue) {
        if (deviceEndpointsBuilder_ == null) {
          ensureDeviceEndpointsIsMutable();
          deviceEndpoints_.set(index, builderForValue.build());
          onChanged();
        } else {
          deviceEndpointsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder addDeviceEndpoints(context.ContextOuterClass.EndPoint value) {
        if (deviceEndpointsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceEndpointsIsMutable();
          deviceEndpoints_.add(value);
          onChanged();
        } else {
          deviceEndpointsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder addDeviceEndpoints(
          int index, context.ContextOuterClass.EndPoint value) {
        if (deviceEndpointsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceEndpointsIsMutable();
          deviceEndpoints_.add(index, value);
          onChanged();
        } else {
          deviceEndpointsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder addDeviceEndpoints(
          context.ContextOuterClass.EndPoint.Builder builderForValue) {
        if (deviceEndpointsBuilder_ == null) {
          ensureDeviceEndpointsIsMutable();
          deviceEndpoints_.add(builderForValue.build());
          onChanged();
        } else {
          deviceEndpointsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder addDeviceEndpoints(
          int index, context.ContextOuterClass.EndPoint.Builder builderForValue) {
        if (deviceEndpointsBuilder_ == null) {
          ensureDeviceEndpointsIsMutable();
          deviceEndpoints_.add(index, builderForValue.build());
          onChanged();
        } else {
          deviceEndpointsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder addAllDeviceEndpoints(
          java.lang.Iterable<? extends context.ContextOuterClass.EndPoint> values) {
        if (deviceEndpointsBuilder_ == null) {
          ensureDeviceEndpointsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, deviceEndpoints_);
          onChanged();
        } else {
          deviceEndpointsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder clearDeviceEndpoints() {
        if (deviceEndpointsBuilder_ == null) {
          deviceEndpoints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          deviceEndpointsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public Builder removeDeviceEndpoints(int index) {
        if (deviceEndpointsBuilder_ == null) {
          ensureDeviceEndpointsIsMutable();
          deviceEndpoints_.remove(index);
          onChanged();
        } else {
          deviceEndpointsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public context.ContextOuterClass.EndPoint.Builder getDeviceEndpointsBuilder(
          int index) {
        return getDeviceEndpointsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(
          int index) {
        if (deviceEndpointsBuilder_ == null) {
          return deviceEndpoints_.get(index);  } else {
          return deviceEndpointsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> 
           getDeviceEndpointsOrBuilderList() {
        if (deviceEndpointsBuilder_ != null) {
          return deviceEndpointsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(deviceEndpoints_);
        }
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder() {
        return getDeviceEndpointsFieldBuilder().addBuilder(
            context.ContextOuterClass.EndPoint.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder(
          int index) {
        return getDeviceEndpointsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.EndPoint.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPoint.Builder> 
           getDeviceEndpointsBuilderList() {
        return getDeviceEndpointsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> 
          getDeviceEndpointsFieldBuilder() {
        if (deviceEndpointsBuilder_ == null) {
          deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder>(
                  deviceEndpoints_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          deviceEndpoints_ = null;
        }
        return deviceEndpointsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.Component> component_ =
        java.util.Collections.emptyList();
      private void ensureComponentIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          component_ = new java.util.ArrayList<context.ContextOuterClass.Component>(component_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> componentBuilder_;

      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public java.util.List<context.ContextOuterClass.Component> getComponentList() {
        if (componentBuilder_ == null) {
          return java.util.Collections.unmodifiableList(component_);
        } else {
          return componentBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public int getComponentCount() {
        if (componentBuilder_ == null) {
          return component_.size();
        } else {
          return componentBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public context.ContextOuterClass.Component getComponent(int index) {
        if (componentBuilder_ == null) {
          return component_.get(index);
        } else {
          return componentBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder setComponent(
          int index, context.ContextOuterClass.Component value) {
        if (componentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureComponentIsMutable();
          component_.set(index, value);
          onChanged();
        } else {
          componentBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder setComponent(
          int index, context.ContextOuterClass.Component.Builder builderForValue) {
        if (componentBuilder_ == null) {
          ensureComponentIsMutable();
          component_.set(index, builderForValue.build());
          onChanged();
        } else {
          componentBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder addComponent(context.ContextOuterClass.Component value) {
        if (componentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureComponentIsMutable();
          component_.add(value);
          onChanged();
        } else {
          componentBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder addComponent(
          int index, context.ContextOuterClass.Component value) {
        if (componentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureComponentIsMutable();
          component_.add(index, value);
          onChanged();
        } else {
          componentBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder addComponent(
          context.ContextOuterClass.Component.Builder builderForValue) {
        if (componentBuilder_ == null) {
          ensureComponentIsMutable();
          component_.add(builderForValue.build());
          onChanged();
        } else {
          componentBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder addComponent(
          int index, context.ContextOuterClass.Component.Builder builderForValue) {
        if (componentBuilder_ == null) {
          ensureComponentIsMutable();
          component_.add(index, builderForValue.build());
          onChanged();
        } else {
          componentBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder addAllComponent(
          java.lang.Iterable<? extends context.ContextOuterClass.Component> values) {
        if (componentBuilder_ == null) {
          ensureComponentIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, component_);
          onChanged();
        } else {
          componentBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder clearComponent() {
        if (componentBuilder_ == null) {
          component_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          componentBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public Builder removeComponent(int index) {
        if (componentBuilder_ == null) {
          ensureComponentIsMutable();
          component_.remove(index);
          onChanged();
        } else {
          componentBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public context.ContextOuterClass.Component.Builder getComponentBuilder(
          int index) {
        return getComponentFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
          int index) {
        if (componentBuilder_ == null) {
          return component_.get(index);  } else {
          return componentBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
           getComponentOrBuilderList() {
        if (componentBuilder_ != null) {
          return componentBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(component_);
        }
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public context.ContextOuterClass.Component.Builder addComponentBuilder() {
        return getComponentFieldBuilder().addBuilder(
            context.ContextOuterClass.Component.getDefaultInstance());
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public context.ContextOuterClass.Component.Builder addComponentBuilder(
          int index) {
        return getComponentFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Component.getDefaultInstance());
      }
      /**
       * <pre>
       * Used for inventory
       * </pre>
       *
       * <code>repeated .context.Component component = 8;</code>
       */
      public java.util.List<context.ContextOuterClass.Component.Builder> 
           getComponentBuilderList() {
        return getComponentFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> 
          getComponentFieldBuilder() {
        if (componentBuilder_ == null) {
          componentBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(
                  component_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          component_ = null;
        }
        return componentBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Device)
    }

    // @@protoc_insertion_point(class_scope:context.Device)
    private static final context.ContextOuterClass.Device DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Device();
    }

    public static context.ContextOuterClass.Device getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Device getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComponentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Component)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string comp_string = 1;</code>
     * @return A list containing the compString.
     */
    java.util.List<java.lang.String>
        getCompStringList();
    /**
     * <code>repeated string comp_string = 1;</code>
     * @return The count of compString.
     */
    int getCompStringCount();
    /**
     * <code>repeated string comp_string = 1;</code>
     * @param index The index of the element to return.
     * @return The compString at the given index.
     */
    java.lang.String getCompString(int index);
    /**
     * <code>repeated string comp_string = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the compString at the given index.
     */
    com.google.protobuf.ByteString
        getCompStringBytes(int index);
  }
  /**
   * Protobuf type {@code context.Component}
   */
  public static final class Component extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Component)
      ComponentOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Component.newBuilder() to construct.
    private Component(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Component() {
      compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Component();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Component(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                compString_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              compString_.add(s);
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          compString_ = compString_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Component_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Component_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
    }

    public static final int COMP_STRING_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList compString_;
    /**
     * <code>repeated string comp_string = 1;</code>
     * @return A list containing the compString.
     */
    public com.google.protobuf.ProtocolStringList
        getCompStringList() {
      return compString_;
    }
    /**
     * <code>repeated string comp_string = 1;</code>
     * @return The count of compString.
     */
    public int getCompStringCount() {
      return compString_.size();
    }
    /**
     * <code>repeated string comp_string = 1;</code>
     * @param index The index of the element to return.
     * @return The compString at the given index.
     */
    public java.lang.String getCompString(int index) {
      return compString_.get(index);
    }
    /**
     * <code>repeated string comp_string = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the compString at the given index.
     */
    public com.google.protobuf.ByteString
        getCompStringBytes(int index) {
      return compString_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < compString_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, compString_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < compString_.size(); i++) {
          dataSize += computeStringSizeNoTag(compString_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCompStringList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Component)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Component other = (context.ContextOuterClass.Component) obj;

      if (!getCompStringList()
          .equals(other.getCompStringList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.Component parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Component parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Component parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Component parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Component parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Component parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Component parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Component 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 context.ContextOuterClass.Component parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Component 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 context.ContextOuterClass.Component parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Component parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Component prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Component}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Component)
        context.ContextOuterClass.ComponentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Component_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Component_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
      }

      // Construct using context.ContextOuterClass.Component.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Component_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Component getDefaultInstanceForType() {
        return context.ContextOuterClass.Component.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Component build() {
        context.ContextOuterClass.Component result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Component buildPartial() {
        context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          compString_ = compString_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.compString_ = compString_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Component) {
          return mergeFrom((context.ContextOuterClass.Component)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Component other) {
        if (other == context.ContextOuterClass.Component.getDefaultInstance()) return this;
        if (!other.compString_.isEmpty()) {
          if (compString_.isEmpty()) {
            compString_ = other.compString_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureCompStringIsMutable();
            compString_.addAll(other.compString_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Component parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Component) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureCompStringIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          compString_ = new com.google.protobuf.LazyStringArrayList(compString_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @return A list containing the compString.
       */
      public com.google.protobuf.ProtocolStringList
          getCompStringList() {
        return compString_.getUnmodifiableView();
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @return The count of compString.
       */
      public int getCompStringCount() {
        return compString_.size();
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @param index The index of the element to return.
       * @return The compString at the given index.
       */
      public java.lang.String getCompString(int index) {
        return compString_.get(index);
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the compString at the given index.
       */
      public com.google.protobuf.ByteString
          getCompStringBytes(int index) {
        return compString_.getByteString(index);
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @param index The index to set the value at.
       * @param value The compString to set.
       * @return This builder for chaining.
       */
      public Builder setCompString(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCompStringIsMutable();
        compString_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @param value The compString to add.
       * @return This builder for chaining.
       */
      public Builder addCompString(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCompStringIsMutable();
        compString_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @param values The compString to add.
       * @return This builder for chaining.
       */
      public Builder addAllCompString(
          java.lang.Iterable<java.lang.String> values) {
        ensureCompStringIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, compString_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCompString() {
        compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string comp_string = 1;</code>
       * @param value The bytes of the compString to add.
       * @return This builder for chaining.
       */
      public Builder addCompStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureCompStringIsMutable();
        compString_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Component)
    }

    // @@protoc_insertion_point(class_scope:context.Component)
    private static final context.ContextOuterClass.Component DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Component();
    }

    public static context.ContextOuterClass.Component getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Component getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.DeviceConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    java.util.List<context.ContextOuterClass.ConfigRule> 
        getConfigRulesList();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    context.ContextOuterClass.ConfigRule getConfigRules(int index);
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    int getConfigRulesCount();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
        getConfigRulesOrBuilderList();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.DeviceConfig}
   */
  public static final class DeviceConfig extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.DeviceConfig)
      DeviceConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceConfig.newBuilder() to construct.
    private DeviceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceConfig() {
      configRules_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeviceConfig();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeviceConfig(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
                mutable_bitField0_ |= 0x00000001;
              }
              configRules_.add(
                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          configRules_ = java.util.Collections.unmodifiableList(configRules_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
    }

    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
      return configRules_;
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
        getConfigRulesOrBuilderList() {
      return configRules_;
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public int getConfigRulesCount() {
      return configRules_.size();
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
      return configRules_.get(index);
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
        int index) {
      return configRules_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < configRules_.size(); i++) {
        output.writeMessage(1, configRules_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < configRules_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, configRules_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.DeviceConfig)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) obj;

      if (!getConfigRulesList()
          .equals(other.getConfigRulesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.DeviceConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceConfig parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceConfig parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceConfig 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 context.ContextOuterClass.DeviceConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceConfig 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 context.ContextOuterClass.DeviceConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceConfig parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.DeviceConfig prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.DeviceConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.DeviceConfig)
        context.ContextOuterClass.DeviceConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
      }

      // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getConfigRulesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (configRulesBuilder_ == null) {
          configRules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          configRulesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
        return context.ContextOuterClass.DeviceConfig.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceConfig build() {
        context.ContextOuterClass.DeviceConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceConfig buildPartial() {
        context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
        int from_bitField0_ = bitField0_;
        if (configRulesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            configRules_ = java.util.Collections.unmodifiableList(configRules_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.configRules_ = configRules_;
        } else {
          result.configRules_ = configRulesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.DeviceConfig) {
          return mergeFrom((context.ContextOuterClass.DeviceConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.DeviceConfig other) {
        if (other == context.ContextOuterClass.DeviceConfig.getDefaultInstance()) return this;
        if (configRulesBuilder_ == null) {
          if (!other.configRules_.isEmpty()) {
            if (configRules_.isEmpty()) {
              configRules_ = other.configRules_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConfigRulesIsMutable();
              configRules_.addAll(other.configRules_);
            }
            onChanged();
          }
        } else {
          if (!other.configRules_.isEmpty()) {
            if (configRulesBuilder_.isEmpty()) {
              configRulesBuilder_.dispose();
              configRulesBuilder_ = null;
              configRules_ = other.configRules_;
              bitField0_ = (bitField0_ & ~0x00000001);
              configRulesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConfigRulesFieldBuilder() : null;
            } else {
              configRulesBuilder_.addAllMessages(other.configRules_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.DeviceConfig parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.DeviceConfig) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ =
        java.util.Collections.emptyList();
      private void ensureConfigRulesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;

      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
        if (configRulesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(configRules_);
        } else {
          return configRulesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public int getConfigRulesCount() {
        if (configRulesBuilder_ == null) {
          return configRules_.size();
        } else {
          return configRulesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
        if (configRulesBuilder_ == null) {
          return configRules_.get(index);
        } else {
          return configRulesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder setConfigRules(
          int index, context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.set(index, value);
          onChanged();
        } else {
          configRulesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder setConfigRules(
          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.set(index, builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.add(value);
          onChanged();
        } else {
          configRulesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          int index, context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.add(index, value);
          onChanged();
        } else {
          configRulesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.add(builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.add(index, builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addAllConfigRules(
          java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, configRules_);
          onChanged();
        } else {
          configRulesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder clearConfigRules() {
        if (configRulesBuilder_ == null) {
          configRules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          configRulesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder removeConfigRules(int index) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.remove(index);
          onChanged();
        } else {
          configRulesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
          int index) {
        return getConfigRulesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
          int index) {
        if (configRulesBuilder_ == null) {
          return configRules_.get(index);  } else {
          return configRulesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
           getConfigRulesOrBuilderList() {
        if (configRulesBuilder_ != null) {
          return configRulesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(configRules_);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
        return getConfigRulesFieldBuilder().addBuilder(
            context.ContextOuterClass.ConfigRule.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
          int index) {
        return getConfigRulesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ConfigRule.Builder> 
           getConfigRulesBuilderList() {
        return getConfigRulesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> 
          getConfigRulesFieldBuilder() {
        if (configRulesBuilder_ == null) {
          configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(
                  configRules_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          configRules_ = null;
        }
        return configRulesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.DeviceConfig)
    }

    // @@protoc_insertion_point(class_scope:context.DeviceConfig)
    private static final context.ContextOuterClass.DeviceConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceConfig();
    }

    public static context.ContextOuterClass.DeviceConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceIdListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.DeviceIdList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    java.util.List<context.ContextOuterClass.DeviceId> 
        getDeviceIdsList();
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    context.ContextOuterClass.DeviceId getDeviceIds(int index);
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    int getDeviceIdsCount();
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
        getDeviceIdsOrBuilderList();
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.DeviceIdList}
   */
  public static final class DeviceIdList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.DeviceIdList)
      DeviceIdListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceIdList.newBuilder() to construct.
    private DeviceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceIdList() {
      deviceIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeviceIdList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeviceIdList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
                mutable_bitField0_ |= 0x00000001;
              }
              deviceIds_.add(
                  input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
    }

    public static final int DEVICE_IDS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
      return deviceIds_;
    }
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
        getDeviceIdsOrBuilderList() {
      return deviceIds_;
    }
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    @java.lang.Override
    public int getDeviceIdsCount() {
      return deviceIds_.size();
    }
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
      return deviceIds_.get(index);
    }
    /**
     * <code>repeated .context.DeviceId device_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
        int index) {
      return deviceIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < deviceIds_.size(); i++) {
        output.writeMessage(1, deviceIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < deviceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, deviceIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.DeviceIdList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;

      if (!getDeviceIdsList()
          .equals(other.getDeviceIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.DeviceIdList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceIdList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceIdList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceIdList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceIdList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceIdList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceIdList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceIdList 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 context.ContextOuterClass.DeviceIdList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceIdList 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 context.ContextOuterClass.DeviceIdList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceIdList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.DeviceIdList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.DeviceIdList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.DeviceIdList)
        context.ContextOuterClass.DeviceIdListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
      }

      // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDeviceIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (deviceIdsBuilder_ == null) {
          deviceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          deviceIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
        return context.ContextOuterClass.DeviceIdList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceIdList build() {
        context.ContextOuterClass.DeviceIdList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceIdList buildPartial() {
        context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
        int from_bitField0_ = bitField0_;
        if (deviceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.deviceIds_ = deviceIds_;
        } else {
          result.deviceIds_ = deviceIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.DeviceIdList) {
          return mergeFrom((context.ContextOuterClass.DeviceIdList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.DeviceIdList other) {
        if (other == context.ContextOuterClass.DeviceIdList.getDefaultInstance()) return this;
        if (deviceIdsBuilder_ == null) {
          if (!other.deviceIds_.isEmpty()) {
            if (deviceIds_.isEmpty()) {
              deviceIds_ = other.deviceIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDeviceIdsIsMutable();
              deviceIds_.addAll(other.deviceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.deviceIds_.isEmpty()) {
            if (deviceIdsBuilder_.isEmpty()) {
              deviceIdsBuilder_.dispose();
              deviceIdsBuilder_ = null;
              deviceIds_ = other.deviceIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              deviceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDeviceIdsFieldBuilder() : null;
            } else {
              deviceIdsBuilder_.addAllMessages(other.deviceIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.DeviceIdList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.DeviceIdList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ =
        java.util.Collections.emptyList();
      private void ensureDeviceIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;

      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
        if (deviceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(deviceIds_);
        } else {
          return deviceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public int getDeviceIdsCount() {
        if (deviceIdsBuilder_ == null) {
          return deviceIds_.size();
        } else {
          return deviceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
        if (deviceIdsBuilder_ == null) {
          return deviceIds_.get(index);
        } else {
          return deviceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder setDeviceIds(
          int index, context.ContextOuterClass.DeviceId value) {
        if (deviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceIdsIsMutable();
          deviceIds_.set(index, value);
          onChanged();
        } else {
          deviceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder setDeviceIds(
          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          deviceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          deviceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
        if (deviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceIdsIsMutable();
          deviceIds_.add(value);
          onChanged();
        } else {
          deviceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder addDeviceIds(
          int index, context.ContextOuterClass.DeviceId value) {
        if (deviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceIdsIsMutable();
          deviceIds_.add(index, value);
          onChanged();
        } else {
          deviceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder addDeviceIds(
          context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          deviceIds_.add(builderForValue.build());
          onChanged();
        } else {
          deviceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder addDeviceIds(
          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          deviceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          deviceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder addAllDeviceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, deviceIds_);
          onChanged();
        } else {
          deviceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder clearDeviceIds() {
        if (deviceIdsBuilder_ == null) {
          deviceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          deviceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public Builder removeDeviceIds(int index) {
        if (deviceIdsBuilder_ == null) {
          ensureDeviceIdsIsMutable();
          deviceIds_.remove(index);
          onChanged();
        } else {
          deviceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(
          int index) {
        return getDeviceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
          int index) {
        if (deviceIdsBuilder_ == null) {
          return deviceIds_.get(index);  } else {
          return deviceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
           getDeviceIdsOrBuilderList() {
        if (deviceIdsBuilder_ != null) {
          return deviceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(deviceIds_);
        }
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
        return getDeviceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.DeviceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(
          int index) {
        return getDeviceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.DeviceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.DeviceId device_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.DeviceId.Builder> 
           getDeviceIdsBuilderList() {
        return getDeviceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
          getDeviceIdsFieldBuilder() {
        if (deviceIdsBuilder_ == null) {
          deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
                  deviceIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          deviceIds_ = null;
        }
        return deviceIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.DeviceIdList)
    }

    // @@protoc_insertion_point(class_scope:context.DeviceIdList)
    private static final context.ContextOuterClass.DeviceIdList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceIdList();
    }

    public static context.ContextOuterClass.DeviceIdList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.DeviceList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    java.util.List<context.ContextOuterClass.Device> 
        getDevicesList();
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    context.ContextOuterClass.Device getDevices(int index);
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    int getDevicesCount();
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
        getDevicesOrBuilderList();
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.DeviceList}
   */
  public static final class DeviceList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.DeviceList)
      DeviceListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceList.newBuilder() to construct.
    private DeviceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceList() {
      devices_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeviceList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeviceList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
                mutable_bitField0_ |= 0x00000001;
              }
              devices_.add(
                  input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          devices_ = java.util.Collections.unmodifiableList(devices_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
    }

    public static final int DEVICES_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.Device> devices_;
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
      return devices_;
    }
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
        getDevicesOrBuilderList() {
      return devices_;
    }
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    @java.lang.Override
    public int getDevicesCount() {
      return devices_.size();
    }
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Device getDevices(int index) {
      return devices_.get(index);
    }
    /**
     * <code>repeated .context.Device devices = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
        int index) {
      return devices_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < devices_.size(); i++) {
        output.writeMessage(1, devices_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < devices_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, devices_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.DeviceList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) obj;

      if (!getDevicesList()
          .equals(other.getDevicesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.DeviceList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceList 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 context.ContextOuterClass.DeviceList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceList 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 context.ContextOuterClass.DeviceList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.DeviceList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.DeviceList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.DeviceList)
        context.ContextOuterClass.DeviceListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
      }

      // Construct using context.ContextOuterClass.DeviceList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDevicesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (devicesBuilder_ == null) {
          devices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          devicesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
        return context.ContextOuterClass.DeviceList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceList build() {
        context.ContextOuterClass.DeviceList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceList buildPartial() {
        context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
        int from_bitField0_ = bitField0_;
        if (devicesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            devices_ = java.util.Collections.unmodifiableList(devices_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.devices_ = devices_;
        } else {
          result.devices_ = devicesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.DeviceList) {
          return mergeFrom((context.ContextOuterClass.DeviceList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.DeviceList other) {
        if (other == context.ContextOuterClass.DeviceList.getDefaultInstance()) return this;
        if (devicesBuilder_ == null) {
          if (!other.devices_.isEmpty()) {
            if (devices_.isEmpty()) {
              devices_ = other.devices_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDevicesIsMutable();
              devices_.addAll(other.devices_);
            }
            onChanged();
          }
        } else {
          if (!other.devices_.isEmpty()) {
            if (devicesBuilder_.isEmpty()) {
              devicesBuilder_.dispose();
              devicesBuilder_ = null;
              devices_ = other.devices_;
              bitField0_ = (bitField0_ & ~0x00000001);
              devicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDevicesFieldBuilder() : null;
            } else {
              devicesBuilder_.addAllMessages(other.devices_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.DeviceList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.DeviceList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.Device> devices_ =
        java.util.Collections.emptyList();
      private void ensureDevicesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;

      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
        if (devicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(devices_);
        } else {
          return devicesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public int getDevicesCount() {
        if (devicesBuilder_ == null) {
          return devices_.size();
        } else {
          return devicesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public context.ContextOuterClass.Device getDevices(int index) {
        if (devicesBuilder_ == null) {
          return devices_.get(index);
        } else {
          return devicesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder setDevices(
          int index, context.ContextOuterClass.Device value) {
        if (devicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDevicesIsMutable();
          devices_.set(index, value);
          onChanged();
        } else {
          devicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder setDevices(
          int index, context.ContextOuterClass.Device.Builder builderForValue) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          devices_.set(index, builderForValue.build());
          onChanged();
        } else {
          devicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder addDevices(context.ContextOuterClass.Device value) {
        if (devicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDevicesIsMutable();
          devices_.add(value);
          onChanged();
        } else {
          devicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder addDevices(
          int index, context.ContextOuterClass.Device value) {
        if (devicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDevicesIsMutable();
          devices_.add(index, value);
          onChanged();
        } else {
          devicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder addDevices(
          context.ContextOuterClass.Device.Builder builderForValue) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          devices_.add(builderForValue.build());
          onChanged();
        } else {
          devicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder addDevices(
          int index, context.ContextOuterClass.Device.Builder builderForValue) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          devices_.add(index, builderForValue.build());
          onChanged();
        } else {
          devicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder addAllDevices(
          java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, devices_);
          onChanged();
        } else {
          devicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder clearDevices() {
        if (devicesBuilder_ == null) {
          devices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          devicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public Builder removeDevices(int index) {
        if (devicesBuilder_ == null) {
          ensureDevicesIsMutable();
          devices_.remove(index);
          onChanged();
        } else {
          devicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public context.ContextOuterClass.Device.Builder getDevicesBuilder(
          int index) {
        return getDevicesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
          int index) {
        if (devicesBuilder_ == null) {
          return devices_.get(index);  } else {
          return devicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
           getDevicesOrBuilderList() {
        if (devicesBuilder_ != null) {
          return devicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(devices_);
        }
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
        return getDevicesFieldBuilder().addBuilder(
            context.ContextOuterClass.Device.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public context.ContextOuterClass.Device.Builder addDevicesBuilder(
          int index) {
        return getDevicesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Device.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Device devices = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Device.Builder> 
           getDevicesBuilderList() {
        return getDevicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> 
          getDevicesFieldBuilder() {
        if (devicesBuilder_ == null) {
          devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(
                  devices_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          devices_ = null;
        }
        return devicesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.DeviceList)
    }

    // @@protoc_insertion_point(class_scope:context.DeviceList)
    private static final context.ContextOuterClass.DeviceList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceList();
    }

    public static context.ContextOuterClass.DeviceList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.DeviceEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    boolean hasEvent();
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    context.ContextOuterClass.Event getEvent();
    /**
     * <code>.context.Event event = 1;</code>
     */
    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

    /**
     * <code>.context.DeviceId device_id = 2;</code>
     * @return Whether the deviceId field is set.
     */
    boolean hasDeviceId();
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     * @return The deviceId.
     */
    context.ContextOuterClass.DeviceId getDeviceId();
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     */
    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();

    /**
     * <code>.context.DeviceConfig device_config = 3;</code>
     * @return Whether the deviceConfig field is set.
     */
    boolean hasDeviceConfig();
    /**
     * <code>.context.DeviceConfig device_config = 3;</code>
     * @return The deviceConfig.
     */
    context.ContextOuterClass.DeviceConfig getDeviceConfig();
    /**
     * <code>.context.DeviceConfig device_config = 3;</code>
     */
    context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder();
  }
  /**
   * Protobuf type {@code context.DeviceEvent}
   */
  public static final class DeviceEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.DeviceEvent)
      DeviceEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceEvent.newBuilder() to construct.
    private DeviceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceEvent() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeviceEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeviceEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Event.Builder subBuilder = null;
              if (event_ != null) {
                subBuilder = event_.toBuilder();
              }
              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(event_);
                event_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
              if (deviceId_ != null) {
                subBuilder = deviceId_.toBuilder();
              }
              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceId_);
                deviceId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
              if (deviceConfig_ != null) {
                subBuilder = deviceConfig_.toBuilder();
              }
              deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceConfig_);
                deviceConfig_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
    }

    public static final int EVENT_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Event event_;
    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    @java.lang.Override
    public boolean hasEvent() {
      return event_ != null;
    }
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    @java.lang.Override
    public context.ContextOuterClass.Event getEvent() {
      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
    }
    /**
     * <code>.context.Event event = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
      return getEvent();
    }

    public static final int DEVICE_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.DeviceId deviceId_;
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     * @return Whether the deviceId field is set.
     */
    @java.lang.Override
    public boolean hasDeviceId() {
      return deviceId_ != null;
    }
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     * @return The deviceId.
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceId getDeviceId() {
      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
    }
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
      return getDeviceId();
    }

    public static final int DEVICE_CONFIG_FIELD_NUMBER = 3;
    private context.ContextOuterClass.DeviceConfig deviceConfig_;
    /**
     * <code>.context.DeviceConfig device_config = 3;</code>
     * @return Whether the deviceConfig field is set.
     */
    @java.lang.Override
    public boolean hasDeviceConfig() {
      return deviceConfig_ != null;
    }
    /**
     * <code>.context.DeviceConfig device_config = 3;</code>
     * @return The deviceConfig.
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
      return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
    }
    /**
     * <code>.context.DeviceConfig device_config = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
      return getDeviceConfig();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (event_ != null) {
        output.writeMessage(1, getEvent());
      }
      if (deviceId_ != null) {
        output.writeMessage(2, getDeviceId());
      }
      if (deviceConfig_ != null) {
        output.writeMessage(3, getDeviceConfig());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (event_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEvent());
      }
      if (deviceId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDeviceId());
      }
      if (deviceConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getDeviceConfig());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.DeviceEvent)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.DeviceEvent other = (context.ContextOuterClass.DeviceEvent) obj;

      if (hasEvent() != other.hasEvent()) return false;
      if (hasEvent()) {
        if (!getEvent()
            .equals(other.getEvent())) return false;
      }
      if (hasDeviceId() != other.hasDeviceId()) return false;
      if (hasDeviceId()) {
        if (!getDeviceId()
            .equals(other.getDeviceId())) return false;
      }
      if (hasDeviceConfig() != other.hasDeviceConfig()) return false;
      if (hasDeviceConfig()) {
        if (!getDeviceConfig()
            .equals(other.getDeviceConfig())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEvent()) {
        hash = (37 * hash) + EVENT_FIELD_NUMBER;
        hash = (53 * hash) + getEvent().hashCode();
      }
      if (hasDeviceId()) {
        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceId().hashCode();
      }
      if (hasDeviceConfig()) {
        hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceConfig().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.DeviceEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.DeviceEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.DeviceEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceEvent 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 context.ContextOuterClass.DeviceEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceEvent 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 context.ContextOuterClass.DeviceEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.DeviceEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.DeviceEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.DeviceEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.DeviceEvent)
        context.ContextOuterClass.DeviceEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
      }

      // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (eventBuilder_ == null) {
          event_ = null;
        } else {
          event_ = null;
          eventBuilder_ = null;
        }
        if (deviceIdBuilder_ == null) {
          deviceId_ = null;
        } else {
          deviceId_ = null;
          deviceIdBuilder_ = null;
        }
        if (deviceConfigBuilder_ == null) {
          deviceConfig_ = null;
        } else {
          deviceConfig_ = null;
          deviceConfigBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
        return context.ContextOuterClass.DeviceEvent.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceEvent build() {
        context.ContextOuterClass.DeviceEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.DeviceEvent buildPartial() {
        context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
        if (eventBuilder_ == null) {
          result.event_ = event_;
        } else {
          result.event_ = eventBuilder_.build();
        }
        if (deviceIdBuilder_ == null) {
          result.deviceId_ = deviceId_;
        } else {
          result.deviceId_ = deviceIdBuilder_.build();
        }
        if (deviceConfigBuilder_ == null) {
          result.deviceConfig_ = deviceConfig_;
        } else {
          result.deviceConfig_ = deviceConfigBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.DeviceEvent) {
          return mergeFrom((context.ContextOuterClass.DeviceEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.DeviceEvent other) {
        if (other == context.ContextOuterClass.DeviceEvent.getDefaultInstance()) return this;
        if (other.hasEvent()) {
          mergeEvent(other.getEvent());
        }
        if (other.hasDeviceId()) {
          mergeDeviceId(other.getDeviceId());
        }
        if (other.hasDeviceConfig()) {
          mergeDeviceConfig(other.getDeviceConfig());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.DeviceEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.DeviceEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Event event_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
      /**
       * <code>.context.Event event = 1;</code>
       * @return Whether the event field is set.
       */
      public boolean hasEvent() {
        return eventBuilder_ != null || event_ != null;
      }
      /**
       * <code>.context.Event event = 1;</code>
       * @return The event.
       */
      public context.ContextOuterClass.Event getEvent() {
        if (eventBuilder_ == null) {
          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        } else {
          return eventBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          eventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(
          context.ContextOuterClass.Event.Builder builderForValue) {
        if (eventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          eventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder mergeEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (event_ != null) {
            event_ =
              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          eventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder clearEvent() {
        if (eventBuilder_ == null) {
          event_ = null;
          onChanged();
        } else {
          event_ = null;
          eventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.Event.Builder getEventBuilder() {
        
        onChanged();
        return getEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
        if (eventBuilder_ != null) {
          return eventBuilder_.getMessageOrBuilder();
        } else {
          return event_ == null ?
              context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
          getEventFieldBuilder() {
        if (eventBuilder_ == null) {
          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
                  getEvent(),
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        return eventBuilder_;
      }

      private context.ContextOuterClass.DeviceId deviceId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       * @return Whether the deviceId field is set.
       */
      public boolean hasDeviceId() {
        return deviceIdBuilder_ != null || deviceId_ != null;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       * @return The deviceId.
       */
      public context.ContextOuterClass.DeviceId getDeviceId() {
        if (deviceIdBuilder_ == null) {
          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        } else {
          return deviceIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
        if (deviceIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceId_ = value;
          onChanged();
        } else {
          deviceIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public Builder setDeviceId(
          context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdBuilder_ == null) {
          deviceId_ = builderForValue.build();
          onChanged();
        } else {
          deviceIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
        if (deviceIdBuilder_ == null) {
          if (deviceId_ != null) {
            deviceId_ =
              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
          } else {
            deviceId_ = value;
          }
          onChanged();
        } else {
          deviceIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public Builder clearDeviceId() {
        if (deviceIdBuilder_ == null) {
          deviceId_ = null;
          onChanged();
        } else {
          deviceId_ = null;
          deviceIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
        
        onChanged();
        return getDeviceIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
        if (deviceIdBuilder_ != null) {
          return deviceIdBuilder_.getMessageOrBuilder();
        } else {
          return deviceId_ == null ?
              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
          getDeviceIdFieldBuilder() {
        if (deviceIdBuilder_ == null) {
          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
                  getDeviceId(),
                  getParentForChildren(),
                  isClean());
          deviceId_ = null;
        }
        return deviceIdBuilder_;
      }

      private context.ContextOuterClass.DeviceConfig deviceConfig_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_;
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       * @return Whether the deviceConfig field is set.
       */
      public boolean hasDeviceConfig() {
        return deviceConfigBuilder_ != null || deviceConfig_ != null;
      }
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       * @return The deviceConfig.
       */
      public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
        if (deviceConfigBuilder_ == null) {
          return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
        } else {
          return deviceConfigBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       */
      public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
        if (deviceConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceConfig_ = value;
          onChanged();
        } else {
          deviceConfigBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       */
      public Builder setDeviceConfig(
          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
        if (deviceConfigBuilder_ == null) {
          deviceConfig_ = builderForValue.build();
          onChanged();
        } else {
          deviceConfigBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       */
      public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
        if (deviceConfigBuilder_ == null) {
          if (deviceConfig_ != null) {
            deviceConfig_ =
              context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
          } else {
            deviceConfig_ = value;
          }
          onChanged();
        } else {
          deviceConfigBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       */
      public Builder clearDeviceConfig() {
        if (deviceConfigBuilder_ == null) {
          deviceConfig_ = null;
          onChanged();
        } else {
          deviceConfig_ = null;
          deviceConfigBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       */
      public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
        
        onChanged();
        return getDeviceConfigFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       */
      public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
        if (deviceConfigBuilder_ != null) {
          return deviceConfigBuilder_.getMessageOrBuilder();
        } else {
          return deviceConfig_ == null ?
              context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
        }
      }
      /**
       * <code>.context.DeviceConfig device_config = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> 
          getDeviceConfigFieldBuilder() {
        if (deviceConfigBuilder_ == null) {
          deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(
                  getDeviceConfig(),
                  getParentForChildren(),
                  isClean());
          deviceConfig_ = null;
        }
        return deviceConfigBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.DeviceEvent)
    }

    // @@protoc_insertion_point(class_scope:context.DeviceEvent)
    private static final context.ContextOuterClass.DeviceEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceEvent();
    }

    public static context.ContextOuterClass.DeviceEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LinkIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.LinkId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Uuid link_uuid = 1;</code>
     * @return Whether the linkUuid field is set.
     */
    boolean hasLinkUuid();
    /**
     * <code>.context.Uuid link_uuid = 1;</code>
     * @return The linkUuid.
     */
    context.ContextOuterClass.Uuid getLinkUuid();
    /**
     * <code>.context.Uuid link_uuid = 1;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder();
  }
  /**
   * <pre>
   * ----- Link ----------------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.LinkId}
   */
  public static final class LinkId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.LinkId)
      LinkIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LinkId.newBuilder() to construct.
    private LinkId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LinkId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new LinkId();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LinkId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (linkUuid_ != null) {
                subBuilder = linkUuid_.toBuilder();
              }
              linkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(linkUuid_);
                linkUuid_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_LinkId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
    }

    public static final int LINK_UUID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Uuid linkUuid_;
    /**
     * <code>.context.Uuid link_uuid = 1;</code>
     * @return Whether the linkUuid field is set.
     */
    @java.lang.Override
    public boolean hasLinkUuid() {
      return linkUuid_ != null;
    }
    /**
     * <code>.context.Uuid link_uuid = 1;</code>
     * @return The linkUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getLinkUuid() {
      return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
    }
    /**
     * <code>.context.Uuid link_uuid = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
      return getLinkUuid();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (linkUuid_ != null) {
        output.writeMessage(1, getLinkUuid());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (linkUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getLinkUuid());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.LinkId)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.LinkId other = (context.ContextOuterClass.LinkId) obj;

      if (hasLinkUuid() != other.hasLinkUuid()) return false;
      if (hasLinkUuid()) {
        if (!getLinkUuid()
            .equals(other.getLinkUuid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.LinkId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkId 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 context.ContextOuterClass.LinkId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkId 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 context.ContextOuterClass.LinkId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.LinkId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Link ----------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.LinkId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.LinkId)
        context.ContextOuterClass.LinkIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
      }

      // Construct using context.ContextOuterClass.LinkId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (linkUuidBuilder_ == null) {
          linkUuid_ = null;
        } else {
          linkUuid_ = null;
          linkUuidBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
        return context.ContextOuterClass.LinkId.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkId build() {
        context.ContextOuterClass.LinkId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkId buildPartial() {
        context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
        if (linkUuidBuilder_ == null) {
          result.linkUuid_ = linkUuid_;
        } else {
          result.linkUuid_ = linkUuidBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.LinkId) {
          return mergeFrom((context.ContextOuterClass.LinkId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.LinkId other) {
        if (other == context.ContextOuterClass.LinkId.getDefaultInstance()) return this;
        if (other.hasLinkUuid()) {
          mergeLinkUuid(other.getLinkUuid());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.LinkId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.LinkId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Uuid linkUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> linkUuidBuilder_;
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       * @return Whether the linkUuid field is set.
       */
      public boolean hasLinkUuid() {
        return linkUuidBuilder_ != null || linkUuid_ != null;
      }
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       * @return The linkUuid.
       */
      public context.ContextOuterClass.Uuid getLinkUuid() {
        if (linkUuidBuilder_ == null) {
          return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
        } else {
          return linkUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       */
      public Builder setLinkUuid(context.ContextOuterClass.Uuid value) {
        if (linkUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          linkUuid_ = value;
          onChanged();
        } else {
          linkUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       */
      public Builder setLinkUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (linkUuidBuilder_ == null) {
          linkUuid_ = builderForValue.build();
          onChanged();
        } else {
          linkUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       */
      public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
        if (linkUuidBuilder_ == null) {
          if (linkUuid_ != null) {
            linkUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(linkUuid_).mergeFrom(value).buildPartial();
          } else {
            linkUuid_ = value;
          }
          onChanged();
        } else {
          linkUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       */
      public Builder clearLinkUuid() {
        if (linkUuidBuilder_ == null) {
          linkUuid_ = null;
          onChanged();
        } else {
          linkUuid_ = null;
          linkUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
        
        onChanged();
        return getLinkUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
        if (linkUuidBuilder_ != null) {
          return linkUuidBuilder_.getMessageOrBuilder();
        } else {
          return linkUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
        }
      }
      /**
       * <code>.context.Uuid link_uuid = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getLinkUuidFieldBuilder() {
        if (linkUuidBuilder_ == null) {
          linkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getLinkUuid(),
                  getParentForChildren(),
                  isClean());
          linkUuid_ = null;
        }
        return linkUuidBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.LinkId)
    }

    // @@protoc_insertion_point(class_scope:context.LinkId)
    private static final context.ContextOuterClass.LinkId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkId();
    }

    public static context.ContextOuterClass.LinkId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LinkOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Link)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.LinkId link_id = 1;</code>
     * @return Whether the linkId field is set.
     */
    boolean hasLinkId();
    /**
     * <code>.context.LinkId link_id = 1;</code>
     * @return The linkId.
     */
    context.ContextOuterClass.LinkId getLinkId();
    /**
     * <code>.context.LinkId link_id = 1;</code>
     */
    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    java.util.List<context.ContextOuterClass.EndPointId> 
        getLinkEndpointIdsList();
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    context.ContextOuterClass.EndPointId getLinkEndpointIds(int index);
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    int getLinkEndpointIdsCount();
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getLinkEndpointIdsOrBuilderList();
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.Link}
   */
  public static final class Link extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Link)
      LinkOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Link.newBuilder() to construct.
    private Link(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Link() {
      name_ = "";
      linkEndpointIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Link();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Link(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.LinkId.Builder subBuilder = null;
              if (linkId_ != null) {
                subBuilder = linkId_.toBuilder();
              }
              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(linkId_);
                linkId_ = subBuilder.buildPartial();
              }

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

              name_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
                mutable_bitField0_ |= 0x00000001;
              }
              linkEndpointIds_.add(
                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Link_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Link_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Link.class, context.ContextOuterClass.Link.Builder.class);
    }

    public static final int LINK_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.LinkId linkId_;
    /**
     * <code>.context.LinkId link_id = 1;</code>
     * @return Whether the linkId field is set.
     */
    @java.lang.Override
    public boolean hasLinkId() {
      return linkId_ != null;
    }
    /**
     * <code>.context.LinkId link_id = 1;</code>
     * @return The linkId.
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkId getLinkId() {
      return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
    }
    /**
     * <code>.context.LinkId link_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
      return getLinkId();
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 3;
    private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
      return linkEndpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getLinkEndpointIdsOrBuilderList() {
      return linkEndpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public int getLinkEndpointIdsCount() {
      return linkEndpointIds_.size();
    }
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
      return linkEndpointIds_.get(index);
    }
    /**
     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
        int index) {
      return linkEndpointIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (linkId_ != null) {
        output.writeMessage(1, getLinkId());
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      for (int i = 0; i < linkEndpointIds_.size(); i++) {
        output.writeMessage(3, linkEndpointIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (linkId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getLinkId());
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      for (int i = 0; i < linkEndpointIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, linkEndpointIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Link)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Link other = (context.ContextOuterClass.Link) obj;

      if (hasLinkId() != other.hasLinkId()) return false;
      if (hasLinkId()) {
        if (!getLinkId()
            .equals(other.getLinkId())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (!getLinkEndpointIdsList()
          .equals(other.getLinkEndpointIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasLinkId()) {
        hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
        hash = (53 * hash) + getLinkId().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getLinkEndpointIdsCount() > 0) {
        hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Link parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Link parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Link parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Link parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Link parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Link parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Link parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Link 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 context.ContextOuterClass.Link parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Link 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 context.ContextOuterClass.Link parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Link parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Link prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Link}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Link)
        context.ContextOuterClass.LinkOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Link_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Link_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Link.class, context.ContextOuterClass.Link.Builder.class);
      }

      // Construct using context.ContextOuterClass.Link.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getLinkEndpointIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (linkIdBuilder_ == null) {
          linkId_ = null;
        } else {
          linkId_ = null;
          linkIdBuilder_ = null;
        }
        name_ = "";

        if (linkEndpointIdsBuilder_ == null) {
          linkEndpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          linkEndpointIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Link_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Link getDefaultInstanceForType() {
        return context.ContextOuterClass.Link.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Link build() {
        context.ContextOuterClass.Link result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Link buildPartial() {
        context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
        int from_bitField0_ = bitField0_;
        if (linkIdBuilder_ == null) {
          result.linkId_ = linkId_;
        } else {
          result.linkId_ = linkIdBuilder_.build();
        }
        result.name_ = name_;
        if (linkEndpointIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.linkEndpointIds_ = linkEndpointIds_;
        } else {
          result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Link) {
          return mergeFrom((context.ContextOuterClass.Link)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Link other) {
        if (other == context.ContextOuterClass.Link.getDefaultInstance()) return this;
        if (other.hasLinkId()) {
          mergeLinkId(other.getLinkId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (linkEndpointIdsBuilder_ == null) {
          if (!other.linkEndpointIds_.isEmpty()) {
            if (linkEndpointIds_.isEmpty()) {
              linkEndpointIds_ = other.linkEndpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureLinkEndpointIdsIsMutable();
              linkEndpointIds_.addAll(other.linkEndpointIds_);
            }
            onChanged();
          }
        } else {
          if (!other.linkEndpointIds_.isEmpty()) {
            if (linkEndpointIdsBuilder_.isEmpty()) {
              linkEndpointIdsBuilder_.dispose();
              linkEndpointIdsBuilder_ = null;
              linkEndpointIds_ = other.linkEndpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              linkEndpointIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLinkEndpointIdsFieldBuilder() : null;
            } else {
              linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Link parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Link) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.LinkId linkId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
      /**
       * <code>.context.LinkId link_id = 1;</code>
       * @return Whether the linkId field is set.
       */
      public boolean hasLinkId() {
        return linkIdBuilder_ != null || linkId_ != null;
      }
      /**
       * <code>.context.LinkId link_id = 1;</code>
       * @return The linkId.
       */
      public context.ContextOuterClass.LinkId getLinkId() {
        if (linkIdBuilder_ == null) {
          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        } else {
          return linkIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.LinkId link_id = 1;</code>
       */
      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
        if (linkIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          linkId_ = value;
          onChanged();
        } else {
          linkIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.LinkId link_id = 1;</code>
       */
      public Builder setLinkId(
          context.ContextOuterClass.LinkId.Builder builderForValue) {
        if (linkIdBuilder_ == null) {
          linkId_ = builderForValue.build();
          onChanged();
        } else {
          linkIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.LinkId link_id = 1;</code>
       */
      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
        if (linkIdBuilder_ == null) {
          if (linkId_ != null) {
            linkId_ =
              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
          } else {
            linkId_ = value;
          }
          onChanged();
        } else {
          linkIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.LinkId link_id = 1;</code>
       */
      public Builder clearLinkId() {
        if (linkIdBuilder_ == null) {
          linkId_ = null;
          onChanged();
        } else {
          linkId_ = null;
          linkIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.LinkId link_id = 1;</code>
       */
      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
        
        onChanged();
        return getLinkIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.LinkId link_id = 1;</code>
       */
      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
        if (linkIdBuilder_ != null) {
          return linkIdBuilder_.getMessageOrBuilder();
        } else {
          return linkId_ == null ?
              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        }
      }
      /**
       * <code>.context.LinkId link_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
          getLinkIdFieldBuilder() {
        if (linkIdBuilder_ == null) {
          linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
                  getLinkId(),
                  getParentForChildren(),
                  isClean());
          linkId_ = null;
        }
        return linkIdBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ =
        java.util.Collections.emptyList();
      private void ensureLinkEndpointIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> linkEndpointIdsBuilder_;

      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
        if (linkEndpointIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(linkEndpointIds_);
        } else {
          return linkEndpointIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public int getLinkEndpointIdsCount() {
        if (linkEndpointIdsBuilder_ == null) {
          return linkEndpointIds_.size();
        } else {
          return linkEndpointIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
        if (linkEndpointIdsBuilder_ == null) {
          return linkEndpointIds_.get(index);
        } else {
          return linkEndpointIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder setLinkEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (linkEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkEndpointIdsIsMutable();
          linkEndpointIds_.set(index, value);
          onChanged();
        } else {
          linkEndpointIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder setLinkEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (linkEndpointIdsBuilder_ == null) {
          ensureLinkEndpointIdsIsMutable();
          linkEndpointIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          linkEndpointIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId value) {
        if (linkEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkEndpointIdsIsMutable();
          linkEndpointIds_.add(value);
          onChanged();
        } else {
          linkEndpointIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder addLinkEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (linkEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkEndpointIdsIsMutable();
          linkEndpointIds_.add(index, value);
          onChanged();
        } else {
          linkEndpointIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder addLinkEndpointIds(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (linkEndpointIdsBuilder_ == null) {
          ensureLinkEndpointIdsIsMutable();
          linkEndpointIds_.add(builderForValue.build());
          onChanged();
        } else {
          linkEndpointIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder addLinkEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (linkEndpointIdsBuilder_ == null) {
          ensureLinkEndpointIdsIsMutable();
          linkEndpointIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          linkEndpointIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder addAllLinkEndpointIds(
          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
        if (linkEndpointIdsBuilder_ == null) {
          ensureLinkEndpointIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, linkEndpointIds_);
          onChanged();
        } else {
          linkEndpointIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder clearLinkEndpointIds() {
        if (linkEndpointIdsBuilder_ == null) {
          linkEndpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          linkEndpointIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public Builder removeLinkEndpointIds(int index) {
        if (linkEndpointIdsBuilder_ == null) {
          ensureLinkEndpointIdsIsMutable();
          linkEndpointIds_.remove(index);
          onChanged();
        } else {
          linkEndpointIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(
          int index) {
        return getLinkEndpointIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
          int index) {
        if (linkEndpointIdsBuilder_ == null) {
          return linkEndpointIds_.get(index);  } else {
          return linkEndpointIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
           getLinkEndpointIdsOrBuilderList() {
        if (linkEndpointIdsBuilder_ != null) {
          return linkEndpointIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(linkEndpointIds_);
        }
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() {
        return getLinkEndpointIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(
          int index) {
        return getLinkEndpointIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
           getLinkEndpointIdsBuilderList() {
        return getLinkEndpointIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getLinkEndpointIdsFieldBuilder() {
        if (linkEndpointIdsBuilder_ == null) {
          linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  linkEndpointIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          linkEndpointIds_ = null;
        }
        return linkEndpointIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Link)
    }

    // @@protoc_insertion_point(class_scope:context.Link)
    private static final context.ContextOuterClass.Link DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Link();
    }

    public static context.ContextOuterClass.Link getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Link getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LinkIdListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.LinkIdList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    java.util.List<context.ContextOuterClass.LinkId> 
        getLinkIdsList();
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    context.ContextOuterClass.LinkId getLinkIds(int index);
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    int getLinkIdsCount();
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
        getLinkIdsOrBuilderList();
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.LinkIdList}
   */
  public static final class LinkIdList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.LinkIdList)
      LinkIdListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LinkIdList.newBuilder() to construct.
    private LinkIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LinkIdList() {
      linkIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new LinkIdList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LinkIdList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
                mutable_bitField0_ |= 0x00000001;
              }
              linkIds_.add(
                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
    }

    public static final int LINK_IDS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
      return linkIds_;
    }
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
        getLinkIdsOrBuilderList() {
      return linkIds_;
    }
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    @java.lang.Override
    public int getLinkIdsCount() {
      return linkIds_.size();
    }
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkId getLinkIds(int index) {
      return linkIds_.get(index);
    }
    /**
     * <code>repeated .context.LinkId link_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
        int index) {
      return linkIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < linkIds_.size(); i++) {
        output.writeMessage(1, linkIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < linkIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, linkIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.LinkIdList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;

      if (!getLinkIdsList()
          .equals(other.getLinkIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.LinkIdList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkIdList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkIdList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkIdList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkIdList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkIdList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkIdList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkIdList 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 context.ContextOuterClass.LinkIdList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkIdList 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 context.ContextOuterClass.LinkIdList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkIdList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.LinkIdList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.LinkIdList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.LinkIdList)
        context.ContextOuterClass.LinkIdListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
      }

      // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getLinkIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (linkIdsBuilder_ == null) {
          linkIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          linkIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
        return context.ContextOuterClass.LinkIdList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkIdList build() {
        context.ContextOuterClass.LinkIdList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkIdList buildPartial() {
        context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
        int from_bitField0_ = bitField0_;
        if (linkIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.linkIds_ = linkIds_;
        } else {
          result.linkIds_ = linkIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.LinkIdList) {
          return mergeFrom((context.ContextOuterClass.LinkIdList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.LinkIdList other) {
        if (other == context.ContextOuterClass.LinkIdList.getDefaultInstance()) return this;
        if (linkIdsBuilder_ == null) {
          if (!other.linkIds_.isEmpty()) {
            if (linkIds_.isEmpty()) {
              linkIds_ = other.linkIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureLinkIdsIsMutable();
              linkIds_.addAll(other.linkIds_);
            }
            onChanged();
          }
        } else {
          if (!other.linkIds_.isEmpty()) {
            if (linkIdsBuilder_.isEmpty()) {
              linkIdsBuilder_.dispose();
              linkIdsBuilder_ = null;
              linkIds_ = other.linkIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              linkIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLinkIdsFieldBuilder() : null;
            } else {
              linkIdsBuilder_.addAllMessages(other.linkIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.LinkIdList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.LinkIdList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.LinkId> linkIds_ =
        java.util.Collections.emptyList();
      private void ensureLinkIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;

      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
        if (linkIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(linkIds_);
        } else {
          return linkIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public int getLinkIdsCount() {
        if (linkIdsBuilder_ == null) {
          return linkIds_.size();
        } else {
          return linkIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public context.ContextOuterClass.LinkId getLinkIds(int index) {
        if (linkIdsBuilder_ == null) {
          return linkIds_.get(index);
        } else {
          return linkIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder setLinkIds(
          int index, context.ContextOuterClass.LinkId value) {
        if (linkIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIdsIsMutable();
          linkIds_.set(index, value);
          onChanged();
        } else {
          linkIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder setLinkIds(
          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          linkIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          linkIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
        if (linkIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIdsIsMutable();
          linkIds_.add(value);
          onChanged();
        } else {
          linkIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder addLinkIds(
          int index, context.ContextOuterClass.LinkId value) {
        if (linkIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIdsIsMutable();
          linkIds_.add(index, value);
          onChanged();
        } else {
          linkIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder addLinkIds(
          context.ContextOuterClass.LinkId.Builder builderForValue) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          linkIds_.add(builderForValue.build());
          onChanged();
        } else {
          linkIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder addLinkIds(
          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          linkIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          linkIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder addAllLinkIds(
          java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, linkIds_);
          onChanged();
        } else {
          linkIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder clearLinkIds() {
        if (linkIdsBuilder_ == null) {
          linkIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          linkIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public Builder removeLinkIds(int index) {
        if (linkIdsBuilder_ == null) {
          ensureLinkIdsIsMutable();
          linkIds_.remove(index);
          onChanged();
        } else {
          linkIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(
          int index) {
        return getLinkIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
          int index) {
        if (linkIdsBuilder_ == null) {
          return linkIds_.get(index);  } else {
          return linkIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
           getLinkIdsOrBuilderList() {
        if (linkIdsBuilder_ != null) {
          return linkIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(linkIds_);
        }
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
        return getLinkIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.LinkId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(
          int index) {
        return getLinkIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.LinkId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.LinkId link_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.LinkId.Builder> 
           getLinkIdsBuilderList() {
        return getLinkIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
          getLinkIdsFieldBuilder() {
        if (linkIdsBuilder_ == null) {
          linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
                  linkIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          linkIds_ = null;
        }
        return linkIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.LinkIdList)
    }

    // @@protoc_insertion_point(class_scope:context.LinkIdList)
    private static final context.ContextOuterClass.LinkIdList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkIdList();
    }

    public static context.ContextOuterClass.LinkIdList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LinkListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.LinkList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    java.util.List<context.ContextOuterClass.Link> 
        getLinksList();
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    context.ContextOuterClass.Link getLinks(int index);
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    int getLinksCount();
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
        getLinksOrBuilderList();
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.LinkList}
   */
  public static final class LinkList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.LinkList)
      LinkListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LinkList.newBuilder() to construct.
    private LinkList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LinkList() {
      links_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new LinkList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LinkList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
                mutable_bitField0_ |= 0x00000001;
              }
              links_.add(
                  input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          links_ = java.util.Collections.unmodifiableList(links_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
    }

    public static final int LINKS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.Link> links_;
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Link> getLinksList() {
      return links_;
    }
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
        getLinksOrBuilderList() {
      return links_;
    }
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    @java.lang.Override
    public int getLinksCount() {
      return links_.size();
    }
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Link getLinks(int index) {
      return links_.get(index);
    }
    /**
     * <code>repeated .context.Link links = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
        int index) {
      return links_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < links_.size(); i++) {
        output.writeMessage(1, links_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < links_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, links_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.LinkList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;

      if (!getLinksList()
          .equals(other.getLinksList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.LinkList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkList 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 context.ContextOuterClass.LinkList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkList 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 context.ContextOuterClass.LinkList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.LinkList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.LinkList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.LinkList)
        context.ContextOuterClass.LinkListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
      }

      // Construct using context.ContextOuterClass.LinkList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getLinksFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (linksBuilder_ == null) {
          links_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          linksBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
        return context.ContextOuterClass.LinkList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkList build() {
        context.ContextOuterClass.LinkList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkList buildPartial() {
        context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
        int from_bitField0_ = bitField0_;
        if (linksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            links_ = java.util.Collections.unmodifiableList(links_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.links_ = links_;
        } else {
          result.links_ = linksBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.LinkList) {
          return mergeFrom((context.ContextOuterClass.LinkList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.LinkList other) {
        if (other == context.ContextOuterClass.LinkList.getDefaultInstance()) return this;
        if (linksBuilder_ == null) {
          if (!other.links_.isEmpty()) {
            if (links_.isEmpty()) {
              links_ = other.links_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureLinksIsMutable();
              links_.addAll(other.links_);
            }
            onChanged();
          }
        } else {
          if (!other.links_.isEmpty()) {
            if (linksBuilder_.isEmpty()) {
              linksBuilder_.dispose();
              linksBuilder_ = null;
              links_ = other.links_;
              bitField0_ = (bitField0_ & ~0x00000001);
              linksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLinksFieldBuilder() : null;
            } else {
              linksBuilder_.addAllMessages(other.links_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.LinkList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.LinkList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.Link> links_ =
        java.util.Collections.emptyList();
      private void ensureLinksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;

      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Link> getLinksList() {
        if (linksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(links_);
        } else {
          return linksBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public int getLinksCount() {
        if (linksBuilder_ == null) {
          return links_.size();
        } else {
          return linksBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public context.ContextOuterClass.Link getLinks(int index) {
        if (linksBuilder_ == null) {
          return links_.get(index);
        } else {
          return linksBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder setLinks(
          int index, context.ContextOuterClass.Link value) {
        if (linksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinksIsMutable();
          links_.set(index, value);
          onChanged();
        } else {
          linksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder setLinks(
          int index, context.ContextOuterClass.Link.Builder builderForValue) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          links_.set(index, builderForValue.build());
          onChanged();
        } else {
          linksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder addLinks(context.ContextOuterClass.Link value) {
        if (linksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinksIsMutable();
          links_.add(value);
          onChanged();
        } else {
          linksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder addLinks(
          int index, context.ContextOuterClass.Link value) {
        if (linksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinksIsMutable();
          links_.add(index, value);
          onChanged();
        } else {
          linksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder addLinks(
          context.ContextOuterClass.Link.Builder builderForValue) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          links_.add(builderForValue.build());
          onChanged();
        } else {
          linksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder addLinks(
          int index, context.ContextOuterClass.Link.Builder builderForValue) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          links_.add(index, builderForValue.build());
          onChanged();
        } else {
          linksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder addAllLinks(
          java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, links_);
          onChanged();
        } else {
          linksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder clearLinks() {
        if (linksBuilder_ == null) {
          links_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          linksBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public Builder removeLinks(int index) {
        if (linksBuilder_ == null) {
          ensureLinksIsMutable();
          links_.remove(index);
          onChanged();
        } else {
          linksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public context.ContextOuterClass.Link.Builder getLinksBuilder(
          int index) {
        return getLinksFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
          int index) {
        if (linksBuilder_ == null) {
          return links_.get(index);  } else {
          return linksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
           getLinksOrBuilderList() {
        if (linksBuilder_ != null) {
          return linksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(links_);
        }
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public context.ContextOuterClass.Link.Builder addLinksBuilder() {
        return getLinksFieldBuilder().addBuilder(
            context.ContextOuterClass.Link.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public context.ContextOuterClass.Link.Builder addLinksBuilder(
          int index) {
        return getLinksFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Link.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Link links = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Link.Builder> 
           getLinksBuilderList() {
        return getLinksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> 
          getLinksFieldBuilder() {
        if (linksBuilder_ == null) {
          linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(
                  links_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          links_ = null;
        }
        return linksBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.LinkList)
    }

    // @@protoc_insertion_point(class_scope:context.LinkList)
    private static final context.ContextOuterClass.LinkList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkList();
    }

    public static context.ContextOuterClass.LinkList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LinkEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.LinkEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    boolean hasEvent();
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    context.ContextOuterClass.Event getEvent();
    /**
     * <code>.context.Event event = 1;</code>
     */
    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

    /**
     * <code>.context.LinkId link_id = 2;</code>
     * @return Whether the linkId field is set.
     */
    boolean hasLinkId();
    /**
     * <code>.context.LinkId link_id = 2;</code>
     * @return The linkId.
     */
    context.ContextOuterClass.LinkId getLinkId();
    /**
     * <code>.context.LinkId link_id = 2;</code>
     */
    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
  }
  /**
   * Protobuf type {@code context.LinkEvent}
   */
  public static final class LinkEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.LinkEvent)
      LinkEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LinkEvent.newBuilder() to construct.
    private LinkEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LinkEvent() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new LinkEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LinkEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Event.Builder subBuilder = null;
              if (event_ != null) {
                subBuilder = event_.toBuilder();
              }
              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(event_);
                event_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.LinkId.Builder subBuilder = null;
              if (linkId_ != null) {
                subBuilder = linkId_.toBuilder();
              }
              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(linkId_);
                linkId_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
    }

    public static final int EVENT_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Event event_;
    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    @java.lang.Override
    public boolean hasEvent() {
      return event_ != null;
    }
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    @java.lang.Override
    public context.ContextOuterClass.Event getEvent() {
      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
    }
    /**
     * <code>.context.Event event = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
      return getEvent();
    }

    public static final int LINK_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.LinkId linkId_;
    /**
     * <code>.context.LinkId link_id = 2;</code>
     * @return Whether the linkId field is set.
     */
    @java.lang.Override
    public boolean hasLinkId() {
      return linkId_ != null;
    }
    /**
     * <code>.context.LinkId link_id = 2;</code>
     * @return The linkId.
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkId getLinkId() {
      return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
    }
    /**
     * <code>.context.LinkId link_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
      return getLinkId();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (event_ != null) {
        output.writeMessage(1, getEvent());
      }
      if (linkId_ != null) {
        output.writeMessage(2, getLinkId());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (event_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEvent());
      }
      if (linkId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getLinkId());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.LinkEvent)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.LinkEvent other = (context.ContextOuterClass.LinkEvent) obj;

      if (hasEvent() != other.hasEvent()) return false;
      if (hasEvent()) {
        if (!getEvent()
            .equals(other.getEvent())) return false;
      }
      if (hasLinkId() != other.hasLinkId()) return false;
      if (hasLinkId()) {
        if (!getLinkId()
            .equals(other.getLinkId())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEvent()) {
        hash = (37 * hash) + EVENT_FIELD_NUMBER;
        hash = (53 * hash) + getEvent().hashCode();
      }
      if (hasLinkId()) {
        hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
        hash = (53 * hash) + getLinkId().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.LinkEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.LinkEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.LinkEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkEvent 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 context.ContextOuterClass.LinkEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkEvent 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 context.ContextOuterClass.LinkEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.LinkEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.LinkEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.LinkEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.LinkEvent)
        context.ContextOuterClass.LinkEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
      }

      // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (eventBuilder_ == null) {
          event_ = null;
        } else {
          event_ = null;
          eventBuilder_ = null;
        }
        if (linkIdBuilder_ == null) {
          linkId_ = null;
        } else {
          linkId_ = null;
          linkIdBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
        return context.ContextOuterClass.LinkEvent.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkEvent build() {
        context.ContextOuterClass.LinkEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.LinkEvent buildPartial() {
        context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
        if (eventBuilder_ == null) {
          result.event_ = event_;
        } else {
          result.event_ = eventBuilder_.build();
        }
        if (linkIdBuilder_ == null) {
          result.linkId_ = linkId_;
        } else {
          result.linkId_ = linkIdBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.LinkEvent) {
          return mergeFrom((context.ContextOuterClass.LinkEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.LinkEvent other) {
        if (other == context.ContextOuterClass.LinkEvent.getDefaultInstance()) return this;
        if (other.hasEvent()) {
          mergeEvent(other.getEvent());
        }
        if (other.hasLinkId()) {
          mergeLinkId(other.getLinkId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.LinkEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.LinkEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Event event_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
      /**
       * <code>.context.Event event = 1;</code>
       * @return Whether the event field is set.
       */
      public boolean hasEvent() {
        return eventBuilder_ != null || event_ != null;
      }
      /**
       * <code>.context.Event event = 1;</code>
       * @return The event.
       */
      public context.ContextOuterClass.Event getEvent() {
        if (eventBuilder_ == null) {
          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        } else {
          return eventBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          eventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(
          context.ContextOuterClass.Event.Builder builderForValue) {
        if (eventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          eventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder mergeEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (event_ != null) {
            event_ =
              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          eventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder clearEvent() {
        if (eventBuilder_ == null) {
          event_ = null;
          onChanged();
        } else {
          event_ = null;
          eventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.Event.Builder getEventBuilder() {
        
        onChanged();
        return getEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
        if (eventBuilder_ != null) {
          return eventBuilder_.getMessageOrBuilder();
        } else {
          return event_ == null ?
              context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
          getEventFieldBuilder() {
        if (eventBuilder_ == null) {
          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
                  getEvent(),
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        return eventBuilder_;
      }

      private context.ContextOuterClass.LinkId linkId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
      /**
       * <code>.context.LinkId link_id = 2;</code>
       * @return Whether the linkId field is set.
       */
      public boolean hasLinkId() {
        return linkIdBuilder_ != null || linkId_ != null;
      }
      /**
       * <code>.context.LinkId link_id = 2;</code>
       * @return The linkId.
       */
      public context.ContextOuterClass.LinkId getLinkId() {
        if (linkIdBuilder_ == null) {
          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        } else {
          return linkIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.LinkId link_id = 2;</code>
       */
      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
        if (linkIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          linkId_ = value;
          onChanged();
        } else {
          linkIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.LinkId link_id = 2;</code>
       */
      public Builder setLinkId(
          context.ContextOuterClass.LinkId.Builder builderForValue) {
        if (linkIdBuilder_ == null) {
          linkId_ = builderForValue.build();
          onChanged();
        } else {
          linkIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.LinkId link_id = 2;</code>
       */
      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
        if (linkIdBuilder_ == null) {
          if (linkId_ != null) {
            linkId_ =
              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
          } else {
            linkId_ = value;
          }
          onChanged();
        } else {
          linkIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.LinkId link_id = 2;</code>
       */
      public Builder clearLinkId() {
        if (linkIdBuilder_ == null) {
          linkId_ = null;
          onChanged();
        } else {
          linkId_ = null;
          linkIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.LinkId link_id = 2;</code>
       */
      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
        
        onChanged();
        return getLinkIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.LinkId link_id = 2;</code>
       */
      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
        if (linkIdBuilder_ != null) {
          return linkIdBuilder_.getMessageOrBuilder();
        } else {
          return linkId_ == null ?
              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        }
      }
      /**
       * <code>.context.LinkId link_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
          getLinkIdFieldBuilder() {
        if (linkIdBuilder_ == null) {
          linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
                  getLinkId(),
                  getParentForChildren(),
                  isClean());
          linkId_ = null;
        }
        return linkIdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.LinkEvent)
    }

    // @@protoc_insertion_point(class_scope:context.LinkEvent)
    private static final context.ContextOuterClass.LinkEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkEvent();
    }

    public static context.ContextOuterClass.LinkEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ServiceId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    boolean hasContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    context.ContextOuterClass.ContextId getContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

    /**
     * <code>.context.Uuid service_uuid = 2;</code>
     * @return Whether the serviceUuid field is set.
     */
    boolean hasServiceUuid();
    /**
     * <code>.context.Uuid service_uuid = 2;</code>
     * @return The serviceUuid.
     */
    context.ContextOuterClass.Uuid getServiceUuid();
    /**
     * <code>.context.Uuid service_uuid = 2;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder();
  }
  /**
   * <pre>
   * ----- Service -------------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.ServiceId}
   */
  public static final class ServiceId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ServiceId)
      ServiceIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceId.newBuilder() to construct.
    private ServiceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServiceId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceId();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServiceId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ContextId.Builder subBuilder = null;
              if (contextId_ != null) {
                subBuilder = contextId_.toBuilder();
              }
              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contextId_);
                contextId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (serviceUuid_ != null) {
                subBuilder = serviceUuid_.toBuilder();
              }
              serviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(serviceUuid_);
                serviceUuid_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
    }

    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ContextId contextId_;
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    @java.lang.Override
    public boolean hasContextId() {
      return contextId_ != null;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextId getContextId() {
      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
      return getContextId();
    }

    public static final int SERVICE_UUID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.Uuid serviceUuid_;
    /**
     * <code>.context.Uuid service_uuid = 2;</code>
     * @return Whether the serviceUuid field is set.
     */
    @java.lang.Override
    public boolean hasServiceUuid() {
      return serviceUuid_ != null;
    }
    /**
     * <code>.context.Uuid service_uuid = 2;</code>
     * @return The serviceUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getServiceUuid() {
      return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
    }
    /**
     * <code>.context.Uuid service_uuid = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
      return getServiceUuid();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (contextId_ != null) {
        output.writeMessage(1, getContextId());
      }
      if (serviceUuid_ != null) {
        output.writeMessage(2, getServiceUuid());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (contextId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getContextId());
      }
      if (serviceUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getServiceUuid());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ServiceId)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ServiceId other = (context.ContextOuterClass.ServiceId) obj;

      if (hasContextId() != other.hasContextId()) return false;
      if (hasContextId()) {
        if (!getContextId()
            .equals(other.getContextId())) return false;
      }
      if (hasServiceUuid() != other.hasServiceUuid()) return false;
      if (hasServiceUuid()) {
        if (!getServiceUuid()
            .equals(other.getServiceUuid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasContextId()) {
        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getContextId().hashCode();
      }
      if (hasServiceUuid()) {
        hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
        hash = (53 * hash) + getServiceUuid().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ServiceId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceId 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 context.ContextOuterClass.ServiceId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceId 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 context.ContextOuterClass.ServiceId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ServiceId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Service -------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.ServiceId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ServiceId)
        context.ContextOuterClass.ServiceIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
      }

      // Construct using context.ContextOuterClass.ServiceId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextIdBuilder_ == null) {
          contextId_ = null;
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }
        if (serviceUuidBuilder_ == null) {
          serviceUuid_ = null;
        } else {
          serviceUuid_ = null;
          serviceUuidBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
        return context.ContextOuterClass.ServiceId.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceId build() {
        context.ContextOuterClass.ServiceId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceId buildPartial() {
        context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
        if (contextIdBuilder_ == null) {
          result.contextId_ = contextId_;
        } else {
          result.contextId_ = contextIdBuilder_.build();
        }
        if (serviceUuidBuilder_ == null) {
          result.serviceUuid_ = serviceUuid_;
        } else {
          result.serviceUuid_ = serviceUuidBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ServiceId) {
          return mergeFrom((context.ContextOuterClass.ServiceId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ServiceId other) {
        if (other == context.ContextOuterClass.ServiceId.getDefaultInstance()) return this;
        if (other.hasContextId()) {
          mergeContextId(other.getContextId());
        }
        if (other.hasServiceUuid()) {
          mergeServiceUuid(other.getServiceUuid());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ServiceId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ServiceId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.ContextId contextId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return Whether the contextId field is set.
       */
      public boolean hasContextId() {
        return contextIdBuilder_ != null || contextId_ != null;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return The contextId.
       */
      public context.ContextOuterClass.ContextId getContextId() {
        if (contextIdBuilder_ == null) {
          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        } else {
          return contextIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextId_ = value;
          onChanged();
        } else {
          contextIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(
          context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdBuilder_ == null) {
          contextId_ = builderForValue.build();
          onChanged();
        } else {
          contextIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (contextId_ != null) {
            contextId_ =
              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
          } else {
            contextId_ = value;
          }
          onChanged();
        } else {
          contextIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder clearContextId() {
        if (contextIdBuilder_ == null) {
          contextId_ = null;
          onChanged();
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
        
        onChanged();
        return getContextIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
        if (contextIdBuilder_ != null) {
          return contextIdBuilder_.getMessageOrBuilder();
        } else {
          return contextId_ == null ?
              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
          getContextIdFieldBuilder() {
        if (contextIdBuilder_ == null) {
          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
                  getContextId(),
                  getParentForChildren(),
                  isClean());
          contextId_ = null;
        }
        return contextIdBuilder_;
      }

      private context.ContextOuterClass.Uuid serviceUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> serviceUuidBuilder_;
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       * @return Whether the serviceUuid field is set.
       */
      public boolean hasServiceUuid() {
        return serviceUuidBuilder_ != null || serviceUuid_ != null;
      }
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       * @return The serviceUuid.
       */
      public context.ContextOuterClass.Uuid getServiceUuid() {
        if (serviceUuidBuilder_ == null) {
          return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
        } else {
          return serviceUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       */
      public Builder setServiceUuid(context.ContextOuterClass.Uuid value) {
        if (serviceUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          serviceUuid_ = value;
          onChanged();
        } else {
          serviceUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       */
      public Builder setServiceUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (serviceUuidBuilder_ == null) {
          serviceUuid_ = builderForValue.build();
          onChanged();
        } else {
          serviceUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       */
      public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
        if (serviceUuidBuilder_ == null) {
          if (serviceUuid_ != null) {
            serviceUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(serviceUuid_).mergeFrom(value).buildPartial();
          } else {
            serviceUuid_ = value;
          }
          onChanged();
        } else {
          serviceUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       */
      public Builder clearServiceUuid() {
        if (serviceUuidBuilder_ == null) {
          serviceUuid_ = null;
          onChanged();
        } else {
          serviceUuid_ = null;
          serviceUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
        
        onChanged();
        return getServiceUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
        if (serviceUuidBuilder_ != null) {
          return serviceUuidBuilder_.getMessageOrBuilder();
        } else {
          return serviceUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
        }
      }
      /**
       * <code>.context.Uuid service_uuid = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getServiceUuidFieldBuilder() {
        if (serviceUuidBuilder_ == null) {
          serviceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getServiceUuid(),
                  getParentForChildren(),
                  isClean());
          serviceUuid_ = null;
        }
        return serviceUuidBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ServiceId)
    }

    // @@protoc_insertion_point(class_scope:context.ServiceId)
    private static final context.ContextOuterClass.ServiceId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceId();
    }

    public static context.ContextOuterClass.ServiceId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Service)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ServiceId service_id = 1;</code>
     * @return Whether the serviceId field is set.
     */
    boolean hasServiceId();
    /**
     * <code>.context.ServiceId service_id = 1;</code>
     * @return The serviceId.
     */
    context.ContextOuterClass.ServiceId getServiceId();
    /**
     * <code>.context.ServiceId service_id = 1;</code>
     */
    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>.context.ServiceTypeEnum service_type = 3;</code>
     * @return The enum numeric value on the wire for serviceType.
     */
    int getServiceTypeValue();
    /**
     * <code>.context.ServiceTypeEnum service_type = 3;</code>
     * @return The serviceType.
     */
    context.ContextOuterClass.ServiceTypeEnum getServiceType();

    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    java.util.List<context.ContextOuterClass.EndPointId> 
        getServiceEndpointIdsList();
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    context.ContextOuterClass.EndPointId getServiceEndpointIds(int index);
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    int getServiceEndpointIdsCount();
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getServiceEndpointIdsOrBuilderList();
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
        int index);

    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    java.util.List<context.ContextOuterClass.Constraint> 
        getServiceConstraintsList();
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    context.ContextOuterClass.Constraint getServiceConstraints(int index);
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    int getServiceConstraintsCount();
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
        getServiceConstraintsOrBuilderList();
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
        int index);

    /**
     * <code>.context.ServiceStatus service_status = 6;</code>
     * @return Whether the serviceStatus field is set.
     */
    boolean hasServiceStatus();
    /**
     * <code>.context.ServiceStatus service_status = 6;</code>
     * @return The serviceStatus.
     */
    context.ContextOuterClass.ServiceStatus getServiceStatus();
    /**
     * <code>.context.ServiceStatus service_status = 6;</code>
     */
    context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder();

    /**
     * <code>.context.ServiceConfig service_config = 7;</code>
     * @return Whether the serviceConfig field is set.
     */
    boolean hasServiceConfig();
    /**
     * <code>.context.ServiceConfig service_config = 7;</code>
     * @return The serviceConfig.
     */
    context.ContextOuterClass.ServiceConfig getServiceConfig();
    /**
     * <code>.context.ServiceConfig service_config = 7;</code>
     */
    context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder();

    /**
     * <code>.context.Timestamp timestamp = 8;</code>
     * @return Whether the timestamp field is set.
     */
    boolean hasTimestamp();
    /**
     * <code>.context.Timestamp timestamp = 8;</code>
     * @return The timestamp.
     */
    context.ContextOuterClass.Timestamp getTimestamp();
    /**
     * <code>.context.Timestamp timestamp = 8;</code>
     */
    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
  }
  /**
   * Protobuf type {@code context.Service}
   */
  public static final class Service extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Service)
      ServiceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Service.newBuilder() to construct.
    private Service(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Service() {
      name_ = "";
      serviceType_ = 0;
      serviceEndpointIds_ = java.util.Collections.emptyList();
      serviceConstraints_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Service();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Service(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
              if (serviceId_ != null) {
                subBuilder = serviceId_.toBuilder();
              }
              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(serviceId_);
                serviceId_ = subBuilder.buildPartial();
              }

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

              name_ = s;
              break;
            }
            case 24: {
              int rawValue = input.readEnum();

              serviceType_ = rawValue;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
                mutable_bitField0_ |= 0x00000001;
              }
              serviceEndpointIds_.add(
                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
                mutable_bitField0_ |= 0x00000002;
              }
              serviceConstraints_.add(
                  input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
              break;
            }
            case 50: {
              context.ContextOuterClass.ServiceStatus.Builder subBuilder = null;
              if (serviceStatus_ != null) {
                subBuilder = serviceStatus_.toBuilder();
              }
              serviceStatus_ = input.readMessage(context.ContextOuterClass.ServiceStatus.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(serviceStatus_);
                serviceStatus_ = subBuilder.buildPartial();
              }

              break;
            }
            case 58: {
              context.ContextOuterClass.ServiceConfig.Builder subBuilder = null;
              if (serviceConfig_ != null) {
                subBuilder = serviceConfig_.toBuilder();
              }
              serviceConfig_ = input.readMessage(context.ContextOuterClass.ServiceConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(serviceConfig_);
                serviceConfig_ = subBuilder.buildPartial();
              }

              break;
            }
            case 66: {
              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
              if (timestamp_ != null) {
                subBuilder = timestamp_.toBuilder();
              }
              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(timestamp_);
                timestamp_ = subBuilder.buildPartial();
              }

              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Service_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
    }

    public static final int SERVICE_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ServiceId serviceId_;
    /**
     * <code>.context.ServiceId service_id = 1;</code>
     * @return Whether the serviceId field is set.
     */
    @java.lang.Override
    public boolean hasServiceId() {
      return serviceId_ != null;
    }
    /**
     * <code>.context.ServiceId service_id = 1;</code>
     * @return The serviceId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceId getServiceId() {
      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
    }
    /**
     * <code>.context.ServiceId service_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
      return getServiceId();
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERVICE_TYPE_FIELD_NUMBER = 3;
    private int serviceType_;
    /**
     * <code>.context.ServiceTypeEnum service_type = 3;</code>
     * @return The enum numeric value on the wire for serviceType.
     */
    @java.lang.Override public int getServiceTypeValue() {
      return serviceType_;
    }
    /**
     * <code>.context.ServiceTypeEnum service_type = 3;</code>
     * @return The serviceType.
     */
    @java.lang.Override public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
      @SuppressWarnings("deprecation")
      context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
      return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
    }

    public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;
    private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_;
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
      return serviceEndpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getServiceEndpointIdsOrBuilderList() {
      return serviceEndpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    @java.lang.Override
    public int getServiceEndpointIdsCount() {
      return serviceEndpointIds_.size();
    }
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
      return serviceEndpointIds_.get(index);
    }
    /**
     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
        int index) {
      return serviceEndpointIds_.get(index);
    }

    public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 5;
    private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_;
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
      return serviceConstraints_;
    }
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
        getServiceConstraintsOrBuilderList() {
      return serviceConstraints_;
    }
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    @java.lang.Override
    public int getServiceConstraintsCount() {
      return serviceConstraints_.size();
    }
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
      return serviceConstraints_.get(index);
    }
    /**
     * <code>repeated .context.Constraint service_constraints = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
        int index) {
      return serviceConstraints_.get(index);
    }

    public static final int SERVICE_STATUS_FIELD_NUMBER = 6;
    private context.ContextOuterClass.ServiceStatus serviceStatus_;
    /**
     * <code>.context.ServiceStatus service_status = 6;</code>
     * @return Whether the serviceStatus field is set.
     */
    @java.lang.Override
    public boolean hasServiceStatus() {
      return serviceStatus_ != null;
    }
    /**
     * <code>.context.ServiceStatus service_status = 6;</code>
     * @return The serviceStatus.
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceStatus getServiceStatus() {
      return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
    }
    /**
     * <code>.context.ServiceStatus service_status = 6;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
      return getServiceStatus();
    }

    public static final int SERVICE_CONFIG_FIELD_NUMBER = 7;
    private context.ContextOuterClass.ServiceConfig serviceConfig_;
    /**
     * <code>.context.ServiceConfig service_config = 7;</code>
     * @return Whether the serviceConfig field is set.
     */
    @java.lang.Override
    public boolean hasServiceConfig() {
      return serviceConfig_ != null;
    }
    /**
     * <code>.context.ServiceConfig service_config = 7;</code>
     * @return The serviceConfig.
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceConfig getServiceConfig() {
      return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
    }
    /**
     * <code>.context.ServiceConfig service_config = 7;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
      return getServiceConfig();
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 8;
    private context.ContextOuterClass.Timestamp timestamp_;
    /**
     * <code>.context.Timestamp timestamp = 8;</code>
     * @return Whether the timestamp field is set.
     */
    @java.lang.Override
    public boolean hasTimestamp() {
      return timestamp_ != null;
    }
    /**
     * <code>.context.Timestamp timestamp = 8;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public context.ContextOuterClass.Timestamp getTimestamp() {
      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
    }
    /**
     * <code>.context.Timestamp timestamp = 8;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
      return getTimestamp();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (serviceId_ != null) {
        output.writeMessage(1, getServiceId());
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
        output.writeEnum(3, serviceType_);
      }
      for (int i = 0; i < serviceEndpointIds_.size(); i++) {
        output.writeMessage(4, serviceEndpointIds_.get(i));
      }
      for (int i = 0; i < serviceConstraints_.size(); i++) {
        output.writeMessage(5, serviceConstraints_.get(i));
      }
      if (serviceStatus_ != null) {
        output.writeMessage(6, getServiceStatus());
      }
      if (serviceConfig_ != null) {
        output.writeMessage(7, getServiceConfig());
      }
      if (timestamp_ != null) {
        output.writeMessage(8, getTimestamp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (serviceId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getServiceId());
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, serviceType_);
      }
      for (int i = 0; i < serviceEndpointIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, serviceEndpointIds_.get(i));
      }
      for (int i = 0; i < serviceConstraints_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, serviceConstraints_.get(i));
      }
      if (serviceStatus_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getServiceStatus());
      }
      if (serviceConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getServiceConfig());
      }
      if (timestamp_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getTimestamp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Service)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Service other = (context.ContextOuterClass.Service) obj;

      if (hasServiceId() != other.hasServiceId()) return false;
      if (hasServiceId()) {
        if (!getServiceId()
            .equals(other.getServiceId())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (serviceType_ != other.serviceType_) return false;
      if (!getServiceEndpointIdsList()
          .equals(other.getServiceEndpointIdsList())) return false;
      if (!getServiceConstraintsList()
          .equals(other.getServiceConstraintsList())) return false;
      if (hasServiceStatus() != other.hasServiceStatus()) return false;
      if (hasServiceStatus()) {
        if (!getServiceStatus()
            .equals(other.getServiceStatus())) return false;
      }
      if (hasServiceConfig() != other.hasServiceConfig()) return false;
      if (hasServiceConfig()) {
        if (!getServiceConfig()
            .equals(other.getServiceConfig())) return false;
      }
      if (hasTimestamp() != other.hasTimestamp()) return false;
      if (hasTimestamp()) {
        if (!getTimestamp()
            .equals(other.getTimestamp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasServiceId()) {
        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getServiceId().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + SERVICE_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + serviceType_;
      if (getServiceEndpointIdsCount() > 0) {
        hash = (37 * hash) + SERVICE_ENDPOINT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getServiceEndpointIdsList().hashCode();
      }
      if (getServiceConstraintsCount() > 0) {
        hash = (37 * hash) + SERVICE_CONSTRAINTS_FIELD_NUMBER;
        hash = (53 * hash) + getServiceConstraintsList().hashCode();
      }
      if (hasServiceStatus()) {
        hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getServiceStatus().hashCode();
      }
      if (hasServiceConfig()) {
        hash = (37 * hash) + SERVICE_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getServiceConfig().hashCode();
      }
      if (hasTimestamp()) {
        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getTimestamp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Service parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Service parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Service parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Service parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Service parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Service parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Service parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Service 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 context.ContextOuterClass.Service parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Service 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 context.ContextOuterClass.Service parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Service parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Service prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Service}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Service)
        context.ContextOuterClass.ServiceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Service_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
      }

      // Construct using context.ContextOuterClass.Service.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getServiceEndpointIdsFieldBuilder();
          getServiceConstraintsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (serviceIdBuilder_ == null) {
          serviceId_ = null;
        } else {
          serviceId_ = null;
          serviceIdBuilder_ = null;
        }
        name_ = "";

        serviceType_ = 0;

        if (serviceEndpointIdsBuilder_ == null) {
          serviceEndpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          serviceEndpointIdsBuilder_.clear();
        }
        if (serviceConstraintsBuilder_ == null) {
          serviceConstraints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          serviceConstraintsBuilder_.clear();
        }
        if (serviceStatusBuilder_ == null) {
          serviceStatus_ = null;
        } else {
          serviceStatus_ = null;
          serviceStatusBuilder_ = null;
        }
        if (serviceConfigBuilder_ == null) {
          serviceConfig_ = null;
        } else {
          serviceConfig_ = null;
          serviceConfigBuilder_ = null;
        }
        if (timestampBuilder_ == null) {
          timestamp_ = null;
        } else {
          timestamp_ = null;
          timestampBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Service_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Service getDefaultInstanceForType() {
        return context.ContextOuterClass.Service.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Service build() {
        context.ContextOuterClass.Service result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Service buildPartial() {
        context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
        int from_bitField0_ = bitField0_;
        if (serviceIdBuilder_ == null) {
          result.serviceId_ = serviceId_;
        } else {
          result.serviceId_ = serviceIdBuilder_.build();
        }
        result.name_ = name_;
        result.serviceType_ = serviceType_;
        if (serviceEndpointIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.serviceEndpointIds_ = serviceEndpointIds_;
        } else {
          result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
        }
        if (serviceConstraintsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.serviceConstraints_ = serviceConstraints_;
        } else {
          result.serviceConstraints_ = serviceConstraintsBuilder_.build();
        }
        if (serviceStatusBuilder_ == null) {
          result.serviceStatus_ = serviceStatus_;
        } else {
          result.serviceStatus_ = serviceStatusBuilder_.build();
        }
        if (serviceConfigBuilder_ == null) {
          result.serviceConfig_ = serviceConfig_;
        } else {
          result.serviceConfig_ = serviceConfigBuilder_.build();
        }
        if (timestampBuilder_ == null) {
          result.timestamp_ = timestamp_;
        } else {
          result.timestamp_ = timestampBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Service) {
          return mergeFrom((context.ContextOuterClass.Service)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Service other) {
        if (other == context.ContextOuterClass.Service.getDefaultInstance()) return this;
        if (other.hasServiceId()) {
          mergeServiceId(other.getServiceId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.serviceType_ != 0) {
          setServiceTypeValue(other.getServiceTypeValue());
        }
        if (serviceEndpointIdsBuilder_ == null) {
          if (!other.serviceEndpointIds_.isEmpty()) {
            if (serviceEndpointIds_.isEmpty()) {
              serviceEndpointIds_ = other.serviceEndpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureServiceEndpointIdsIsMutable();
              serviceEndpointIds_.addAll(other.serviceEndpointIds_);
            }
            onChanged();
          }
        } else {
          if (!other.serviceEndpointIds_.isEmpty()) {
            if (serviceEndpointIdsBuilder_.isEmpty()) {
              serviceEndpointIdsBuilder_.dispose();
              serviceEndpointIdsBuilder_ = null;
              serviceEndpointIds_ = other.serviceEndpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              serviceEndpointIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServiceEndpointIdsFieldBuilder() : null;
            } else {
              serviceEndpointIdsBuilder_.addAllMessages(other.serviceEndpointIds_);
            }
          }
        }
        if (serviceConstraintsBuilder_ == null) {
          if (!other.serviceConstraints_.isEmpty()) {
            if (serviceConstraints_.isEmpty()) {
              serviceConstraints_ = other.serviceConstraints_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureServiceConstraintsIsMutable();
              serviceConstraints_.addAll(other.serviceConstraints_);
            }
            onChanged();
          }
        } else {
          if (!other.serviceConstraints_.isEmpty()) {
            if (serviceConstraintsBuilder_.isEmpty()) {
              serviceConstraintsBuilder_.dispose();
              serviceConstraintsBuilder_ = null;
              serviceConstraints_ = other.serviceConstraints_;
              bitField0_ = (bitField0_ & ~0x00000002);
              serviceConstraintsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServiceConstraintsFieldBuilder() : null;
            } else {
              serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
            }
          }
        }
        if (other.hasServiceStatus()) {
          mergeServiceStatus(other.getServiceStatus());
        }
        if (other.hasServiceConfig()) {
          mergeServiceConfig(other.getServiceConfig());
        }
        if (other.hasTimestamp()) {
          mergeTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Service parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.ServiceId serviceId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       * @return Whether the serviceId field is set.
       */
      public boolean hasServiceId() {
        return serviceIdBuilder_ != null || serviceId_ != null;
      }
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       * @return The serviceId.
       */
      public context.ContextOuterClass.ServiceId getServiceId() {
        if (serviceIdBuilder_ == null) {
          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        } else {
          return serviceIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       */
      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
        if (serviceIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          serviceId_ = value;
          onChanged();
        } else {
          serviceIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       */
      public Builder setServiceId(
          context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdBuilder_ == null) {
          serviceId_ = builderForValue.build();
          onChanged();
        } else {
          serviceIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       */
      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
        if (serviceIdBuilder_ == null) {
          if (serviceId_ != null) {
            serviceId_ =
              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
          } else {
            serviceId_ = value;
          }
          onChanged();
        } else {
          serviceIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       */
      public Builder clearServiceId() {
        if (serviceIdBuilder_ == null) {
          serviceId_ = null;
          onChanged();
        } else {
          serviceId_ = null;
          serviceIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
        
        onChanged();
        return getServiceIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       */
      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
        if (serviceIdBuilder_ != null) {
          return serviceIdBuilder_.getMessageOrBuilder();
        } else {
          return serviceId_ == null ?
              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }
      }
      /**
       * <code>.context.ServiceId service_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
          getServiceIdFieldBuilder() {
        if (serviceIdBuilder_ == null) {
          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
                  getServiceId(),
                  getParentForChildren(),
                  isClean());
          serviceId_ = null;
        }
        return serviceIdBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private int serviceType_ = 0;
      /**
       * <code>.context.ServiceTypeEnum service_type = 3;</code>
       * @return The enum numeric value on the wire for serviceType.
       */
      @java.lang.Override public int getServiceTypeValue() {
        return serviceType_;
      }
      /**
       * <code>.context.ServiceTypeEnum service_type = 3;</code>
       * @param value The enum numeric value on the wire for serviceType to set.
       * @return This builder for chaining.
       */
      public Builder setServiceTypeValue(int value) {
        
        serviceType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.context.ServiceTypeEnum service_type = 3;</code>
       * @return The serviceType.
       */
      @java.lang.Override
      public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
        @SuppressWarnings("deprecation")
        context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
        return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
      }
      /**
       * <code>.context.ServiceTypeEnum service_type = 3;</code>
       * @param value The serviceType to set.
       * @return This builder for chaining.
       */
      public Builder setServiceType(context.ContextOuterClass.ServiceTypeEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        serviceType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.context.ServiceTypeEnum service_type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceType() {
        
        serviceType_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_ =
        java.util.Collections.emptyList();
      private void ensureServiceEndpointIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(serviceEndpointIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> serviceEndpointIdsBuilder_;

      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
        if (serviceEndpointIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(serviceEndpointIds_);
        } else {
          return serviceEndpointIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public int getServiceEndpointIdsCount() {
        if (serviceEndpointIdsBuilder_ == null) {
          return serviceEndpointIds_.size();
        } else {
          return serviceEndpointIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
        if (serviceEndpointIdsBuilder_ == null) {
          return serviceEndpointIds_.get(index);
        } else {
          return serviceEndpointIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder setServiceEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (serviceEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceEndpointIdsIsMutable();
          serviceEndpointIds_.set(index, value);
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder setServiceEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (serviceEndpointIdsBuilder_ == null) {
          ensureServiceEndpointIdsIsMutable();
          serviceEndpointIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder addServiceEndpointIds(context.ContextOuterClass.EndPointId value) {
        if (serviceEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceEndpointIdsIsMutable();
          serviceEndpointIds_.add(value);
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder addServiceEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (serviceEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceEndpointIdsIsMutable();
          serviceEndpointIds_.add(index, value);
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder addServiceEndpointIds(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (serviceEndpointIdsBuilder_ == null) {
          ensureServiceEndpointIdsIsMutable();
          serviceEndpointIds_.add(builderForValue.build());
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder addServiceEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (serviceEndpointIdsBuilder_ == null) {
          ensureServiceEndpointIdsIsMutable();
          serviceEndpointIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder addAllServiceEndpointIds(
          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
        if (serviceEndpointIdsBuilder_ == null) {
          ensureServiceEndpointIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, serviceEndpointIds_);
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder clearServiceEndpointIds() {
        if (serviceEndpointIdsBuilder_ == null) {
          serviceEndpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public Builder removeServiceEndpointIds(int index) {
        if (serviceEndpointIdsBuilder_ == null) {
          ensureServiceEndpointIdsIsMutable();
          serviceEndpointIds_.remove(index);
          onChanged();
        } else {
          serviceEndpointIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getServiceEndpointIdsBuilder(
          int index) {
        return getServiceEndpointIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
          int index) {
        if (serviceEndpointIdsBuilder_ == null) {
          return serviceEndpointIds_.get(index);  } else {
          return serviceEndpointIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
           getServiceEndpointIdsOrBuilderList() {
        if (serviceEndpointIdsBuilder_ != null) {
          return serviceEndpointIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(serviceEndpointIds_);
        }
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder() {
        return getServiceEndpointIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder(
          int index) {
        return getServiceEndpointIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
           getServiceEndpointIdsBuilderList() {
        return getServiceEndpointIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getServiceEndpointIdsFieldBuilder() {
        if (serviceEndpointIdsBuilder_ == null) {
          serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  serviceEndpointIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          serviceEndpointIds_ = null;
        }
        return serviceEndpointIdsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_ =
        java.util.Collections.emptyList();
      private void ensureServiceConstraintsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(serviceConstraints_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> serviceConstraintsBuilder_;

      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
        if (serviceConstraintsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(serviceConstraints_);
        } else {
          return serviceConstraintsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public int getServiceConstraintsCount() {
        if (serviceConstraintsBuilder_ == null) {
          return serviceConstraints_.size();
        } else {
          return serviceConstraintsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
        if (serviceConstraintsBuilder_ == null) {
          return serviceConstraints_.get(index);
        } else {
          return serviceConstraintsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder setServiceConstraints(
          int index, context.ContextOuterClass.Constraint value) {
        if (serviceConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceConstraintsIsMutable();
          serviceConstraints_.set(index, value);
          onChanged();
        } else {
          serviceConstraintsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder setServiceConstraints(
          int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
        if (serviceConstraintsBuilder_ == null) {
          ensureServiceConstraintsIsMutable();
          serviceConstraints_.set(index, builderForValue.build());
          onChanged();
        } else {
          serviceConstraintsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder addServiceConstraints(context.ContextOuterClass.Constraint value) {
        if (serviceConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceConstraintsIsMutable();
          serviceConstraints_.add(value);
          onChanged();
        } else {
          serviceConstraintsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder addServiceConstraints(
          int index, context.ContextOuterClass.Constraint value) {
        if (serviceConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceConstraintsIsMutable();
          serviceConstraints_.add(index, value);
          onChanged();
        } else {
          serviceConstraintsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder addServiceConstraints(
          context.ContextOuterClass.Constraint.Builder builderForValue) {
        if (serviceConstraintsBuilder_ == null) {
          ensureServiceConstraintsIsMutable();
          serviceConstraints_.add(builderForValue.build());
          onChanged();
        } else {
          serviceConstraintsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder addServiceConstraints(
          int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
        if (serviceConstraintsBuilder_ == null) {
          ensureServiceConstraintsIsMutable();
          serviceConstraints_.add(index, builderForValue.build());
          onChanged();
        } else {
          serviceConstraintsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder addAllServiceConstraints(
          java.lang.Iterable<? extends context.ContextOuterClass.Constraint> values) {
        if (serviceConstraintsBuilder_ == null) {
          ensureServiceConstraintsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, serviceConstraints_);
          onChanged();
        } else {
          serviceConstraintsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder clearServiceConstraints() {
        if (serviceConstraintsBuilder_ == null) {
          serviceConstraints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          serviceConstraintsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public Builder removeServiceConstraints(int index) {
        if (serviceConstraintsBuilder_ == null) {
          ensureServiceConstraintsIsMutable();
          serviceConstraints_.remove(index);
          onChanged();
        } else {
          serviceConstraintsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public context.ContextOuterClass.Constraint.Builder getServiceConstraintsBuilder(
          int index) {
        return getServiceConstraintsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
          int index) {
        if (serviceConstraintsBuilder_ == null) {
          return serviceConstraints_.get(index);  } else {
          return serviceConstraintsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
           getServiceConstraintsOrBuilderList() {
        if (serviceConstraintsBuilder_ != null) {
          return serviceConstraintsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(serviceConstraints_);
        }
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder() {
        return getServiceConstraintsFieldBuilder().addBuilder(
            context.ContextOuterClass.Constraint.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder(
          int index) {
        return getServiceConstraintsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Constraint.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Constraint service_constraints = 5;</code>
       */
      public java.util.List<context.ContextOuterClass.Constraint.Builder> 
           getServiceConstraintsBuilderList() {
        return getServiceConstraintsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> 
          getServiceConstraintsFieldBuilder() {
        if (serviceConstraintsBuilder_ == null) {
          serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(
                  serviceConstraints_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          serviceConstraints_ = null;
        }
        return serviceConstraintsBuilder_;
      }

      private context.ContextOuterClass.ServiceStatus serviceStatus_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> serviceStatusBuilder_;
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       * @return Whether the serviceStatus field is set.
       */
      public boolean hasServiceStatus() {
        return serviceStatusBuilder_ != null || serviceStatus_ != null;
      }
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       * @return The serviceStatus.
       */
      public context.ContextOuterClass.ServiceStatus getServiceStatus() {
        if (serviceStatusBuilder_ == null) {
          return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
        } else {
          return serviceStatusBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       */
      public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus value) {
        if (serviceStatusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          serviceStatus_ = value;
          onChanged();
        } else {
          serviceStatusBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       */
      public Builder setServiceStatus(
          context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
        if (serviceStatusBuilder_ == null) {
          serviceStatus_ = builderForValue.build();
          onChanged();
        } else {
          serviceStatusBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       */
      public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
        if (serviceStatusBuilder_ == null) {
          if (serviceStatus_ != null) {
            serviceStatus_ =
              context.ContextOuterClass.ServiceStatus.newBuilder(serviceStatus_).mergeFrom(value).buildPartial();
          } else {
            serviceStatus_ = value;
          }
          onChanged();
        } else {
          serviceStatusBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       */
      public Builder clearServiceStatus() {
        if (serviceStatusBuilder_ == null) {
          serviceStatus_ = null;
          onChanged();
        } else {
          serviceStatus_ = null;
          serviceStatusBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       */
      public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
        
        onChanged();
        return getServiceStatusFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       */
      public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
        if (serviceStatusBuilder_ != null) {
          return serviceStatusBuilder_.getMessageOrBuilder();
        } else {
          return serviceStatus_ == null ?
              context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
        }
      }
      /**
       * <code>.context.ServiceStatus service_status = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> 
          getServiceStatusFieldBuilder() {
        if (serviceStatusBuilder_ == null) {
          serviceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder>(
                  getServiceStatus(),
                  getParentForChildren(),
                  isClean());
          serviceStatus_ = null;
        }
        return serviceStatusBuilder_;
      }

      private context.ContextOuterClass.ServiceConfig serviceConfig_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> serviceConfigBuilder_;
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       * @return Whether the serviceConfig field is set.
       */
      public boolean hasServiceConfig() {
        return serviceConfigBuilder_ != null || serviceConfig_ != null;
      }
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       * @return The serviceConfig.
       */
      public context.ContextOuterClass.ServiceConfig getServiceConfig() {
        if (serviceConfigBuilder_ == null) {
          return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
        } else {
          return serviceConfigBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       */
      public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig value) {
        if (serviceConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          serviceConfig_ = value;
          onChanged();
        } else {
          serviceConfigBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       */
      public Builder setServiceConfig(
          context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
        if (serviceConfigBuilder_ == null) {
          serviceConfig_ = builderForValue.build();
          onChanged();
        } else {
          serviceConfigBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       */
      public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
        if (serviceConfigBuilder_ == null) {
          if (serviceConfig_ != null) {
            serviceConfig_ =
              context.ContextOuterClass.ServiceConfig.newBuilder(serviceConfig_).mergeFrom(value).buildPartial();
          } else {
            serviceConfig_ = value;
          }
          onChanged();
        } else {
          serviceConfigBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       */
      public Builder clearServiceConfig() {
        if (serviceConfigBuilder_ == null) {
          serviceConfig_ = null;
          onChanged();
        } else {
          serviceConfig_ = null;
          serviceConfigBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       */
      public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
        
        onChanged();
        return getServiceConfigFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       */
      public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
        if (serviceConfigBuilder_ != null) {
          return serviceConfigBuilder_.getMessageOrBuilder();
        } else {
          return serviceConfig_ == null ?
              context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
        }
      }
      /**
       * <code>.context.ServiceConfig service_config = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> 
          getServiceConfigFieldBuilder() {
        if (serviceConfigBuilder_ == null) {
          serviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder>(
                  getServiceConfig(),
                  getParentForChildren(),
                  isClean());
          serviceConfig_ = null;
        }
        return serviceConfigBuilder_;
      }

      private context.ContextOuterClass.Timestamp timestamp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       * @return Whether the timestamp field is set.
       */
      public boolean hasTimestamp() {
        return timestampBuilder_ != null || timestamp_ != null;
      }
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       * @return The timestamp.
       */
      public context.ContextOuterClass.Timestamp getTimestamp() {
        if (timestampBuilder_ == null) {
          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        } else {
          return timestampBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       */
      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
        if (timestampBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timestamp_ = value;
          onChanged();
        } else {
          timestampBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       */
      public Builder setTimestamp(
          context.ContextOuterClass.Timestamp.Builder builderForValue) {
        if (timestampBuilder_ == null) {
          timestamp_ = builderForValue.build();
          onChanged();
        } else {
          timestampBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       */
      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
        if (timestampBuilder_ == null) {
          if (timestamp_ != null) {
            timestamp_ =
              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
          } else {
            timestamp_ = value;
          }
          onChanged();
        } else {
          timestampBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       */
      public Builder clearTimestamp() {
        if (timestampBuilder_ == null) {
          timestamp_ = null;
          onChanged();
        } else {
          timestamp_ = null;
          timestampBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       */
      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
        
        onChanged();
        return getTimestampFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       */
      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
        if (timestampBuilder_ != null) {
          return timestampBuilder_.getMessageOrBuilder();
        } else {
          return timestamp_ == null ?
              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }
      }
      /**
       * <code>.context.Timestamp timestamp = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
          getTimestampFieldBuilder() {
        if (timestampBuilder_ == null) {
          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
                  getTimestamp(),
                  getParentForChildren(),
                  isClean());
          timestamp_ = null;
        }
        return timestampBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Service)
    }

    // @@protoc_insertion_point(class_scope:context.Service)
    private static final context.ContextOuterClass.Service DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Service();
    }

    public static context.ContextOuterClass.Service getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Service getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ServiceStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ServiceStatusEnum service_status = 1;</code>
     * @return The enum numeric value on the wire for serviceStatus.
     */
    int getServiceStatusValue();
    /**
     * <code>.context.ServiceStatusEnum service_status = 1;</code>
     * @return The serviceStatus.
     */
    context.ContextOuterClass.ServiceStatusEnum getServiceStatus();
  }
  /**
   * Protobuf type {@code context.ServiceStatus}
   */
  public static final class ServiceStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ServiceStatus)
      ServiceStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceStatus.newBuilder() to construct.
    private ServiceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServiceStatus() {
      serviceStatus_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceStatus();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServiceStatus(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {
              int rawValue = input.readEnum();

              serviceStatus_ = rawValue;
              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 context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
    }

    public static final int SERVICE_STATUS_FIELD_NUMBER = 1;
    private int serviceStatus_;
    /**
     * <code>.context.ServiceStatusEnum service_status = 1;</code>
     * @return The enum numeric value on the wire for serviceStatus.
     */
    @java.lang.Override public int getServiceStatusValue() {
      return serviceStatus_;
    }
    /**
     * <code>.context.ServiceStatusEnum service_status = 1;</code>
     * @return The serviceStatus.
     */
    @java.lang.Override public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
      @SuppressWarnings("deprecation")
      context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
      return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
        output.writeEnum(1, serviceStatus_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, serviceStatus_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ServiceStatus)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;

      if (serviceStatus_ != other.serviceStatus_) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ServiceStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceStatus parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceStatus 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 context.ContextOuterClass.ServiceStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceStatus 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 context.ContextOuterClass.ServiceStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ServiceStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ServiceStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ServiceStatus)
        context.ContextOuterClass.ServiceStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
      }

      // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        serviceStatus_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
        return context.ContextOuterClass.ServiceStatus.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceStatus build() {
        context.ContextOuterClass.ServiceStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceStatus buildPartial() {
        context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
        result.serviceStatus_ = serviceStatus_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ServiceStatus) {
          return mergeFrom((context.ContextOuterClass.ServiceStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ServiceStatus other) {
        if (other == context.ContextOuterClass.ServiceStatus.getDefaultInstance()) return this;
        if (other.serviceStatus_ != 0) {
          setServiceStatusValue(other.getServiceStatusValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ServiceStatus parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ServiceStatus) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int serviceStatus_ = 0;
      /**
       * <code>.context.ServiceStatusEnum service_status = 1;</code>
       * @return The enum numeric value on the wire for serviceStatus.
       */
      @java.lang.Override public int getServiceStatusValue() {
        return serviceStatus_;
      }
      /**
       * <code>.context.ServiceStatusEnum service_status = 1;</code>
       * @param value The enum numeric value on the wire for serviceStatus to set.
       * @return This builder for chaining.
       */
      public Builder setServiceStatusValue(int value) {
        
        serviceStatus_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.context.ServiceStatusEnum service_status = 1;</code>
       * @return The serviceStatus.
       */
      @java.lang.Override
      public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
        @SuppressWarnings("deprecation")
        context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
        return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
      }
      /**
       * <code>.context.ServiceStatusEnum service_status = 1;</code>
       * @param value The serviceStatus to set.
       * @return This builder for chaining.
       */
      public Builder setServiceStatus(context.ContextOuterClass.ServiceStatusEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        serviceStatus_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.context.ServiceStatusEnum service_status = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceStatus() {
        
        serviceStatus_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ServiceStatus)
    }

    // @@protoc_insertion_point(class_scope:context.ServiceStatus)
    private static final context.ContextOuterClass.ServiceStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceStatus();
    }

    public static context.ContextOuterClass.ServiceStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ServiceConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    java.util.List<context.ContextOuterClass.ConfigRule> 
        getConfigRulesList();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    context.ContextOuterClass.ConfigRule getConfigRules(int index);
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    int getConfigRulesCount();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
        getConfigRulesOrBuilderList();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.ServiceConfig}
   */
  public static final class ServiceConfig extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ServiceConfig)
      ServiceConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceConfig.newBuilder() to construct.
    private ServiceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServiceConfig() {
      configRules_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceConfig();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServiceConfig(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
                mutable_bitField0_ |= 0x00000001;
              }
              configRules_.add(
                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          configRules_ = java.util.Collections.unmodifiableList(configRules_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
    }

    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
      return configRules_;
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
        getConfigRulesOrBuilderList() {
      return configRules_;
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public int getConfigRulesCount() {
      return configRules_.size();
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
      return configRules_.get(index);
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
        int index) {
      return configRules_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < configRules_.size(); i++) {
        output.writeMessage(1, configRules_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < configRules_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, configRules_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ServiceConfig)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;

      if (!getConfigRulesList()
          .equals(other.getConfigRulesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ServiceConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceConfig parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceConfig parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceConfig 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 context.ContextOuterClass.ServiceConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceConfig 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 context.ContextOuterClass.ServiceConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceConfig parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ServiceConfig prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ServiceConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ServiceConfig)
        context.ContextOuterClass.ServiceConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
      }

      // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getConfigRulesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (configRulesBuilder_ == null) {
          configRules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          configRulesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
        return context.ContextOuterClass.ServiceConfig.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceConfig build() {
        context.ContextOuterClass.ServiceConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceConfig buildPartial() {
        context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
        int from_bitField0_ = bitField0_;
        if (configRulesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            configRules_ = java.util.Collections.unmodifiableList(configRules_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.configRules_ = configRules_;
        } else {
          result.configRules_ = configRulesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ServiceConfig) {
          return mergeFrom((context.ContextOuterClass.ServiceConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ServiceConfig other) {
        if (other == context.ContextOuterClass.ServiceConfig.getDefaultInstance()) return this;
        if (configRulesBuilder_ == null) {
          if (!other.configRules_.isEmpty()) {
            if (configRules_.isEmpty()) {
              configRules_ = other.configRules_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConfigRulesIsMutable();
              configRules_.addAll(other.configRules_);
            }
            onChanged();
          }
        } else {
          if (!other.configRules_.isEmpty()) {
            if (configRulesBuilder_.isEmpty()) {
              configRulesBuilder_.dispose();
              configRulesBuilder_ = null;
              configRules_ = other.configRules_;
              bitField0_ = (bitField0_ & ~0x00000001);
              configRulesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConfigRulesFieldBuilder() : null;
            } else {
              configRulesBuilder_.addAllMessages(other.configRules_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ServiceConfig parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ServiceConfig) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ =
        java.util.Collections.emptyList();
      private void ensureConfigRulesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;

      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
        if (configRulesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(configRules_);
        } else {
          return configRulesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public int getConfigRulesCount() {
        if (configRulesBuilder_ == null) {
          return configRules_.size();
        } else {
          return configRulesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
        if (configRulesBuilder_ == null) {
          return configRules_.get(index);
        } else {
          return configRulesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder setConfigRules(
          int index, context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.set(index, value);
          onChanged();
        } else {
          configRulesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder setConfigRules(
          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.set(index, builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.add(value);
          onChanged();
        } else {
          configRulesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          int index, context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.add(index, value);
          onChanged();
        } else {
          configRulesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.add(builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.add(index, builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addAllConfigRules(
          java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, configRules_);
          onChanged();
        } else {
          configRulesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder clearConfigRules() {
        if (configRulesBuilder_ == null) {
          configRules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          configRulesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder removeConfigRules(int index) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.remove(index);
          onChanged();
        } else {
          configRulesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
          int index) {
        return getConfigRulesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
          int index) {
        if (configRulesBuilder_ == null) {
          return configRules_.get(index);  } else {
          return configRulesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
           getConfigRulesOrBuilderList() {
        if (configRulesBuilder_ != null) {
          return configRulesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(configRules_);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
        return getConfigRulesFieldBuilder().addBuilder(
            context.ContextOuterClass.ConfigRule.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
          int index) {
        return getConfigRulesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ConfigRule.Builder> 
           getConfigRulesBuilderList() {
        return getConfigRulesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> 
          getConfigRulesFieldBuilder() {
        if (configRulesBuilder_ == null) {
          configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(
                  configRules_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          configRules_ = null;
        }
        return configRulesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ServiceConfig)
    }

    // @@protoc_insertion_point(class_scope:context.ServiceConfig)
    private static final context.ContextOuterClass.ServiceConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceConfig();
    }

    public static context.ContextOuterClass.ServiceConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceIdListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ServiceIdList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    java.util.List<context.ContextOuterClass.ServiceId> 
        getServiceIdsList();
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    context.ContextOuterClass.ServiceId getServiceIds(int index);
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    int getServiceIdsCount();
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
        getServiceIdsOrBuilderList();
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.ServiceIdList}
   */
  public static final class ServiceIdList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ServiceIdList)
      ServiceIdListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceIdList.newBuilder() to construct.
    private ServiceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServiceIdList() {
      serviceIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceIdList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServiceIdList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
                mutable_bitField0_ |= 0x00000001;
              }
              serviceIds_.add(
                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
    }

    public static final int SERVICE_IDS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
      return serviceIds_;
    }
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
        getServiceIdsOrBuilderList() {
      return serviceIds_;
    }
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    @java.lang.Override
    public int getServiceIdsCount() {
      return serviceIds_.size();
    }
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceId getServiceIds(int index) {
      return serviceIds_.get(index);
    }
    /**
     * <code>repeated .context.ServiceId service_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
        int index) {
      return serviceIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < serviceIds_.size(); i++) {
        output.writeMessage(1, serviceIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < serviceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, serviceIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ServiceIdList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;

      if (!getServiceIdsList()
          .equals(other.getServiceIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ServiceIdList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceIdList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceIdList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceIdList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceIdList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceIdList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceIdList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceIdList 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 context.ContextOuterClass.ServiceIdList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceIdList 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 context.ContextOuterClass.ServiceIdList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceIdList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ServiceIdList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ServiceIdList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ServiceIdList)
        context.ContextOuterClass.ServiceIdListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
      }

      // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getServiceIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (serviceIdsBuilder_ == null) {
          serviceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          serviceIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
        return context.ContextOuterClass.ServiceIdList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceIdList build() {
        context.ContextOuterClass.ServiceIdList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceIdList buildPartial() {
        context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
        int from_bitField0_ = bitField0_;
        if (serviceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.serviceIds_ = serviceIds_;
        } else {
          result.serviceIds_ = serviceIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ServiceIdList) {
          return mergeFrom((context.ContextOuterClass.ServiceIdList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ServiceIdList other) {
        if (other == context.ContextOuterClass.ServiceIdList.getDefaultInstance()) return this;
        if (serviceIdsBuilder_ == null) {
          if (!other.serviceIds_.isEmpty()) {
            if (serviceIds_.isEmpty()) {
              serviceIds_ = other.serviceIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureServiceIdsIsMutable();
              serviceIds_.addAll(other.serviceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.serviceIds_.isEmpty()) {
            if (serviceIdsBuilder_.isEmpty()) {
              serviceIdsBuilder_.dispose();
              serviceIdsBuilder_ = null;
              serviceIds_ = other.serviceIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              serviceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServiceIdsFieldBuilder() : null;
            } else {
              serviceIdsBuilder_.addAllMessages(other.serviceIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ServiceIdList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ServiceIdList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ =
        java.util.Collections.emptyList();
      private void ensureServiceIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;

      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
        if (serviceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(serviceIds_);
        } else {
          return serviceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public int getServiceIdsCount() {
        if (serviceIdsBuilder_ == null) {
          return serviceIds_.size();
        } else {
          return serviceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public context.ContextOuterClass.ServiceId getServiceIds(int index) {
        if (serviceIdsBuilder_ == null) {
          return serviceIds_.get(index);
        } else {
          return serviceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder setServiceIds(
          int index, context.ContextOuterClass.ServiceId value) {
        if (serviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIdsIsMutable();
          serviceIds_.set(index, value);
          onChanged();
        } else {
          serviceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder setServiceIds(
          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          serviceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          serviceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
        if (serviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIdsIsMutable();
          serviceIds_.add(value);
          onChanged();
        } else {
          serviceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder addServiceIds(
          int index, context.ContextOuterClass.ServiceId value) {
        if (serviceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServiceIdsIsMutable();
          serviceIds_.add(index, value);
          onChanged();
        } else {
          serviceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder addServiceIds(
          context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          serviceIds_.add(builderForValue.build());
          onChanged();
        } else {
          serviceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder addServiceIds(
          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          serviceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          serviceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder addAllServiceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, serviceIds_);
          onChanged();
        } else {
          serviceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder clearServiceIds() {
        if (serviceIdsBuilder_ == null) {
          serviceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          serviceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public Builder removeServiceIds(int index) {
        if (serviceIdsBuilder_ == null) {
          ensureServiceIdsIsMutable();
          serviceIds_.remove(index);
          onChanged();
        } else {
          serviceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(
          int index) {
        return getServiceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
          int index) {
        if (serviceIdsBuilder_ == null) {
          return serviceIds_.get(index);  } else {
          return serviceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
           getServiceIdsOrBuilderList() {
        if (serviceIdsBuilder_ != null) {
          return serviceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(serviceIds_);
        }
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
        return getServiceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.ServiceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(
          int index) {
        return getServiceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ServiceId service_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
           getServiceIdsBuilderList() {
        return getServiceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
          getServiceIdsFieldBuilder() {
        if (serviceIdsBuilder_ == null) {
          serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
                  serviceIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          serviceIds_ = null;
        }
        return serviceIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ServiceIdList)
    }

    // @@protoc_insertion_point(class_scope:context.ServiceIdList)
    private static final context.ContextOuterClass.ServiceIdList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceIdList();
    }

    public static context.ContextOuterClass.ServiceIdList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ServiceList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    java.util.List<context.ContextOuterClass.Service> 
        getServicesList();
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    context.ContextOuterClass.Service getServices(int index);
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    int getServicesCount();
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
        getServicesOrBuilderList();
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.ServiceList}
   */
  public static final class ServiceList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ServiceList)
      ServiceListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceList.newBuilder() to construct.
    private ServiceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServiceList() {
      services_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServiceList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                services_ = new java.util.ArrayList<context.ContextOuterClass.Service>();
                mutable_bitField0_ |= 0x00000001;
              }
              services_.add(
                  input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          services_ = java.util.Collections.unmodifiableList(services_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
    }

    public static final int SERVICES_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.Service> services_;
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Service> getServicesList() {
      return services_;
    }
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
        getServicesOrBuilderList() {
      return services_;
    }
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    @java.lang.Override
    public int getServicesCount() {
      return services_.size();
    }
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Service getServices(int index) {
      return services_.get(index);
    }
    /**
     * <code>repeated .context.Service services = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
        int index) {
      return services_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < services_.size(); i++) {
        output.writeMessage(1, services_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < services_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, services_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ServiceList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;

      if (!getServicesList()
          .equals(other.getServicesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ServiceList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceList 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 context.ContextOuterClass.ServiceList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceList 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 context.ContextOuterClass.ServiceList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ServiceList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ServiceList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ServiceList)
        context.ContextOuterClass.ServiceListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
      }

      // Construct using context.ContextOuterClass.ServiceList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getServicesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (servicesBuilder_ == null) {
          services_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          servicesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
        return context.ContextOuterClass.ServiceList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceList build() {
        context.ContextOuterClass.ServiceList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceList buildPartial() {
        context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
        int from_bitField0_ = bitField0_;
        if (servicesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            services_ = java.util.Collections.unmodifiableList(services_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.services_ = services_;
        } else {
          result.services_ = servicesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ServiceList) {
          return mergeFrom((context.ContextOuterClass.ServiceList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ServiceList other) {
        if (other == context.ContextOuterClass.ServiceList.getDefaultInstance()) return this;
        if (servicesBuilder_ == null) {
          if (!other.services_.isEmpty()) {
            if (services_.isEmpty()) {
              services_ = other.services_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureServicesIsMutable();
              services_.addAll(other.services_);
            }
            onChanged();
          }
        } else {
          if (!other.services_.isEmpty()) {
            if (servicesBuilder_.isEmpty()) {
              servicesBuilder_.dispose();
              servicesBuilder_ = null;
              services_ = other.services_;
              bitField0_ = (bitField0_ & ~0x00000001);
              servicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServicesFieldBuilder() : null;
            } else {
              servicesBuilder_.addAllMessages(other.services_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ServiceList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ServiceList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.Service> services_ =
        java.util.Collections.emptyList();
      private void ensureServicesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          services_ = new java.util.ArrayList<context.ContextOuterClass.Service>(services_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> servicesBuilder_;

      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Service> getServicesList() {
        if (servicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(services_);
        } else {
          return servicesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public int getServicesCount() {
        if (servicesBuilder_ == null) {
          return services_.size();
        } else {
          return servicesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public context.ContextOuterClass.Service getServices(int index) {
        if (servicesBuilder_ == null) {
          return services_.get(index);
        } else {
          return servicesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder setServices(
          int index, context.ContextOuterClass.Service value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.set(index, value);
          onChanged();
        } else {
          servicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder setServices(
          int index, context.ContextOuterClass.Service.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.set(index, builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder addServices(context.ContextOuterClass.Service value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.add(value);
          onChanged();
        } else {
          servicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder addServices(
          int index, context.ContextOuterClass.Service value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.add(index, value);
          onChanged();
        } else {
          servicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder addServices(
          context.ContextOuterClass.Service.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.add(builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder addServices(
          int index, context.ContextOuterClass.Service.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.add(index, builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder addAllServices(
          java.lang.Iterable<? extends context.ContextOuterClass.Service> values) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, services_);
          onChanged();
        } else {
          servicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder clearServices() {
        if (servicesBuilder_ == null) {
          services_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          servicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public Builder removeServices(int index) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.remove(index);
          onChanged();
        } else {
          servicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public context.ContextOuterClass.Service.Builder getServicesBuilder(
          int index) {
        return getServicesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
          int index) {
        if (servicesBuilder_ == null) {
          return services_.get(index);  } else {
          return servicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
           getServicesOrBuilderList() {
        if (servicesBuilder_ != null) {
          return servicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(services_);
        }
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public context.ContextOuterClass.Service.Builder addServicesBuilder() {
        return getServicesFieldBuilder().addBuilder(
            context.ContextOuterClass.Service.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public context.ContextOuterClass.Service.Builder addServicesBuilder(
          int index) {
        return getServicesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Service.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Service services = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Service.Builder> 
           getServicesBuilderList() {
        return getServicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> 
          getServicesFieldBuilder() {
        if (servicesBuilder_ == null) {
          servicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder>(
                  services_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          services_ = null;
        }
        return servicesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ServiceList)
    }

    // @@protoc_insertion_point(class_scope:context.ServiceList)
    private static final context.ContextOuterClass.ServiceList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceList();
    }

    public static context.ContextOuterClass.ServiceList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ServiceEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    boolean hasEvent();
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    context.ContextOuterClass.Event getEvent();
    /**
     * <code>.context.Event event = 1;</code>
     */
    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

    /**
     * <code>.context.ServiceId service_id = 2;</code>
     * @return Whether the serviceId field is set.
     */
    boolean hasServiceId();
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     * @return The serviceId.
     */
    context.ContextOuterClass.ServiceId getServiceId();
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     */
    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
  }
  /**
   * Protobuf type {@code context.ServiceEvent}
   */
  public static final class ServiceEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ServiceEvent)
      ServiceEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceEvent.newBuilder() to construct.
    private ServiceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServiceEvent() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServiceEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Event.Builder subBuilder = null;
              if (event_ != null) {
                subBuilder = event_.toBuilder();
              }
              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(event_);
                event_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
              if (serviceId_ != null) {
                subBuilder = serviceId_.toBuilder();
              }
              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(serviceId_);
                serviceId_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
    }

    public static final int EVENT_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Event event_;
    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    @java.lang.Override
    public boolean hasEvent() {
      return event_ != null;
    }
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    @java.lang.Override
    public context.ContextOuterClass.Event getEvent() {
      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
    }
    /**
     * <code>.context.Event event = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
      return getEvent();
    }

    public static final int SERVICE_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.ServiceId serviceId_;
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     * @return Whether the serviceId field is set.
     */
    @java.lang.Override
    public boolean hasServiceId() {
      return serviceId_ != null;
    }
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     * @return The serviceId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceId getServiceId() {
      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
    }
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
      return getServiceId();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (event_ != null) {
        output.writeMessage(1, getEvent());
      }
      if (serviceId_ != null) {
        output.writeMessage(2, getServiceId());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (event_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEvent());
      }
      if (serviceId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getServiceId());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ServiceEvent)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ServiceEvent other = (context.ContextOuterClass.ServiceEvent) obj;

      if (hasEvent() != other.hasEvent()) return false;
      if (hasEvent()) {
        if (!getEvent()
            .equals(other.getEvent())) return false;
      }
      if (hasServiceId() != other.hasServiceId()) return false;
      if (hasServiceId()) {
        if (!getServiceId()
            .equals(other.getServiceId())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEvent()) {
        hash = (37 * hash) + EVENT_FIELD_NUMBER;
        hash = (53 * hash) + getEvent().hashCode();
      }
      if (hasServiceId()) {
        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getServiceId().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ServiceEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ServiceEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ServiceEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceEvent 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 context.ContextOuterClass.ServiceEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceEvent 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 context.ContextOuterClass.ServiceEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ServiceEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ServiceEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ServiceEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ServiceEvent)
        context.ContextOuterClass.ServiceEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
      }

      // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (eventBuilder_ == null) {
          event_ = null;
        } else {
          event_ = null;
          eventBuilder_ = null;
        }
        if (serviceIdBuilder_ == null) {
          serviceId_ = null;
        } else {
          serviceId_ = null;
          serviceIdBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
        return context.ContextOuterClass.ServiceEvent.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceEvent build() {
        context.ContextOuterClass.ServiceEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ServiceEvent buildPartial() {
        context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
        if (eventBuilder_ == null) {
          result.event_ = event_;
        } else {
          result.event_ = eventBuilder_.build();
        }
        if (serviceIdBuilder_ == null) {
          result.serviceId_ = serviceId_;
        } else {
          result.serviceId_ = serviceIdBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ServiceEvent) {
          return mergeFrom((context.ContextOuterClass.ServiceEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ServiceEvent other) {
        if (other == context.ContextOuterClass.ServiceEvent.getDefaultInstance()) return this;
        if (other.hasEvent()) {
          mergeEvent(other.getEvent());
        }
        if (other.hasServiceId()) {
          mergeServiceId(other.getServiceId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ServiceEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ServiceEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Event event_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
      /**
       * <code>.context.Event event = 1;</code>
       * @return Whether the event field is set.
       */
      public boolean hasEvent() {
        return eventBuilder_ != null || event_ != null;
      }
      /**
       * <code>.context.Event event = 1;</code>
       * @return The event.
       */
      public context.ContextOuterClass.Event getEvent() {
        if (eventBuilder_ == null) {
          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        } else {
          return eventBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          eventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(
          context.ContextOuterClass.Event.Builder builderForValue) {
        if (eventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          eventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder mergeEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (event_ != null) {
            event_ =
              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          eventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder clearEvent() {
        if (eventBuilder_ == null) {
          event_ = null;
          onChanged();
        } else {
          event_ = null;
          eventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.Event.Builder getEventBuilder() {
        
        onChanged();
        return getEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
        if (eventBuilder_ != null) {
          return eventBuilder_.getMessageOrBuilder();
        } else {
          return event_ == null ?
              context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
          getEventFieldBuilder() {
        if (eventBuilder_ == null) {
          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
                  getEvent(),
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        return eventBuilder_;
      }

      private context.ContextOuterClass.ServiceId serviceId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       * @return Whether the serviceId field is set.
       */
      public boolean hasServiceId() {
        return serviceIdBuilder_ != null || serviceId_ != null;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       * @return The serviceId.
       */
      public context.ContextOuterClass.ServiceId getServiceId() {
        if (serviceIdBuilder_ == null) {
          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        } else {
          return serviceIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
        if (serviceIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          serviceId_ = value;
          onChanged();
        } else {
          serviceIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public Builder setServiceId(
          context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdBuilder_ == null) {
          serviceId_ = builderForValue.build();
          onChanged();
        } else {
          serviceIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
        if (serviceIdBuilder_ == null) {
          if (serviceId_ != null) {
            serviceId_ =
              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
          } else {
            serviceId_ = value;
          }
          onChanged();
        } else {
          serviceIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public Builder clearServiceId() {
        if (serviceIdBuilder_ == null) {
          serviceId_ = null;
          onChanged();
        } else {
          serviceId_ = null;
          serviceIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
        
        onChanged();
        return getServiceIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
        if (serviceIdBuilder_ != null) {
          return serviceIdBuilder_.getMessageOrBuilder();
        } else {
          return serviceId_ == null ?
              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
          getServiceIdFieldBuilder() {
        if (serviceIdBuilder_ == null) {
          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
                  getServiceId(),
                  getParentForChildren(),
                  isClean());
          serviceId_ = null;
        }
        return serviceIdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ServiceEvent)
    }

    // @@protoc_insertion_point(class_scope:context.ServiceEvent)
    private static final context.ContextOuterClass.ServiceEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceEvent();
    }

    public static context.ContextOuterClass.ServiceEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SliceIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.SliceId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    boolean hasContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    context.ContextOuterClass.ContextId getContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

    /**
     * <code>.context.Uuid slice_uuid = 2;</code>
     * @return Whether the sliceUuid field is set.
     */
    boolean hasSliceUuid();
    /**
     * <code>.context.Uuid slice_uuid = 2;</code>
     * @return The sliceUuid.
     */
    context.ContextOuterClass.Uuid getSliceUuid();
    /**
     * <code>.context.Uuid slice_uuid = 2;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder();
  }
  /**
   * <pre>
   * ----- Slice ---------------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.SliceId}
   */
  public static final class SliceId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.SliceId)
      SliceIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SliceId.newBuilder() to construct.
    private SliceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SliceId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SliceId();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SliceId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ContextId.Builder subBuilder = null;
              if (contextId_ != null) {
                subBuilder = contextId_.toBuilder();
              }
              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contextId_);
                contextId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (sliceUuid_ != null) {
                subBuilder = sliceUuid_.toBuilder();
              }
              sliceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sliceUuid_);
                sliceUuid_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_SliceId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
    }

    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ContextId contextId_;
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    @java.lang.Override
    public boolean hasContextId() {
      return contextId_ != null;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextId getContextId() {
      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
      return getContextId();
    }

    public static final int SLICE_UUID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.Uuid sliceUuid_;
    /**
     * <code>.context.Uuid slice_uuid = 2;</code>
     * @return Whether the sliceUuid field is set.
     */
    @java.lang.Override
    public boolean hasSliceUuid() {
      return sliceUuid_ != null;
    }
    /**
     * <code>.context.Uuid slice_uuid = 2;</code>
     * @return The sliceUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getSliceUuid() {
      return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
    }
    /**
     * <code>.context.Uuid slice_uuid = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
      return getSliceUuid();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (contextId_ != null) {
        output.writeMessage(1, getContextId());
      }
      if (sliceUuid_ != null) {
        output.writeMessage(2, getSliceUuid());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (contextId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getContextId());
      }
      if (sliceUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSliceUuid());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.SliceId)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.SliceId other = (context.ContextOuterClass.SliceId) obj;

      if (hasContextId() != other.hasContextId()) return false;
      if (hasContextId()) {
        if (!getContextId()
            .equals(other.getContextId())) return false;
      }
      if (hasSliceUuid() != other.hasSliceUuid()) return false;
      if (hasSliceUuid()) {
        if (!getSliceUuid()
            .equals(other.getSliceUuid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasContextId()) {
        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getContextId().hashCode();
      }
      if (hasSliceUuid()) {
        hash = (37 * hash) + SLICE_UUID_FIELD_NUMBER;
        hash = (53 * hash) + getSliceUuid().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.SliceId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceId 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 context.ContextOuterClass.SliceId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceId 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 context.ContextOuterClass.SliceId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.SliceId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Slice ---------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.SliceId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.SliceId)
        context.ContextOuterClass.SliceIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
      }

      // Construct using context.ContextOuterClass.SliceId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextIdBuilder_ == null) {
          contextId_ = null;
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }
        if (sliceUuidBuilder_ == null) {
          sliceUuid_ = null;
        } else {
          sliceUuid_ = null;
          sliceUuidBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
        return context.ContextOuterClass.SliceId.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceId build() {
        context.ContextOuterClass.SliceId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceId buildPartial() {
        context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
        if (contextIdBuilder_ == null) {
          result.contextId_ = contextId_;
        } else {
          result.contextId_ = contextIdBuilder_.build();
        }
        if (sliceUuidBuilder_ == null) {
          result.sliceUuid_ = sliceUuid_;
        } else {
          result.sliceUuid_ = sliceUuidBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.SliceId) {
          return mergeFrom((context.ContextOuterClass.SliceId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.SliceId other) {
        if (other == context.ContextOuterClass.SliceId.getDefaultInstance()) return this;
        if (other.hasContextId()) {
          mergeContextId(other.getContextId());
        }
        if (other.hasSliceUuid()) {
          mergeSliceUuid(other.getSliceUuid());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.SliceId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.SliceId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.ContextId contextId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return Whether the contextId field is set.
       */
      public boolean hasContextId() {
        return contextIdBuilder_ != null || contextId_ != null;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return The contextId.
       */
      public context.ContextOuterClass.ContextId getContextId() {
        if (contextIdBuilder_ == null) {
          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        } else {
          return contextIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextId_ = value;
          onChanged();
        } else {
          contextIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(
          context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdBuilder_ == null) {
          contextId_ = builderForValue.build();
          onChanged();
        } else {
          contextIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (contextId_ != null) {
            contextId_ =
              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
          } else {
            contextId_ = value;
          }
          onChanged();
        } else {
          contextIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder clearContextId() {
        if (contextIdBuilder_ == null) {
          contextId_ = null;
          onChanged();
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
        
        onChanged();
        return getContextIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
        if (contextIdBuilder_ != null) {
          return contextIdBuilder_.getMessageOrBuilder();
        } else {
          return contextId_ == null ?
              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
          getContextIdFieldBuilder() {
        if (contextIdBuilder_ == null) {
          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
                  getContextId(),
                  getParentForChildren(),
                  isClean());
          contextId_ = null;
        }
        return contextIdBuilder_;
      }

      private context.ContextOuterClass.Uuid sliceUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> sliceUuidBuilder_;
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       * @return Whether the sliceUuid field is set.
       */
      public boolean hasSliceUuid() {
        return sliceUuidBuilder_ != null || sliceUuid_ != null;
      }
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       * @return The sliceUuid.
       */
      public context.ContextOuterClass.Uuid getSliceUuid() {
        if (sliceUuidBuilder_ == null) {
          return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
        } else {
          return sliceUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       */
      public Builder setSliceUuid(context.ContextOuterClass.Uuid value) {
        if (sliceUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sliceUuid_ = value;
          onChanged();
        } else {
          sliceUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       */
      public Builder setSliceUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (sliceUuidBuilder_ == null) {
          sliceUuid_ = builderForValue.build();
          onChanged();
        } else {
          sliceUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       */
      public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
        if (sliceUuidBuilder_ == null) {
          if (sliceUuid_ != null) {
            sliceUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(sliceUuid_).mergeFrom(value).buildPartial();
          } else {
            sliceUuid_ = value;
          }
          onChanged();
        } else {
          sliceUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       */
      public Builder clearSliceUuid() {
        if (sliceUuidBuilder_ == null) {
          sliceUuid_ = null;
          onChanged();
        } else {
          sliceUuid_ = null;
          sliceUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
        
        onChanged();
        return getSliceUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
        if (sliceUuidBuilder_ != null) {
          return sliceUuidBuilder_.getMessageOrBuilder();
        } else {
          return sliceUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
        }
      }
      /**
       * <code>.context.Uuid slice_uuid = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getSliceUuidFieldBuilder() {
        if (sliceUuidBuilder_ == null) {
          sliceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getSliceUuid(),
                  getParentForChildren(),
                  isClean());
          sliceUuid_ = null;
        }
        return sliceUuidBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.SliceId)
    }

    // @@protoc_insertion_point(class_scope:context.SliceId)
    private static final context.ContextOuterClass.SliceId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceId();
    }

    public static context.ContextOuterClass.SliceId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SliceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Slice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.SliceId slice_id = 1;</code>
     * @return Whether the sliceId field is set.
     */
    boolean hasSliceId();
    /**
     * <code>.context.SliceId slice_id = 1;</code>
     * @return The sliceId.
     */
    context.ContextOuterClass.SliceId getSliceId();
    /**
     * <code>.context.SliceId slice_id = 1;</code>
     */
    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    java.util.List<context.ContextOuterClass.EndPointId> 
        getSliceEndpointIdsList();
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    context.ContextOuterClass.EndPointId getSliceEndpointIds(int index);
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    int getSliceEndpointIdsCount();
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getSliceEndpointIdsOrBuilderList();
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(
        int index);

    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    java.util.List<context.ContextOuterClass.Constraint> 
        getSliceConstraintsList();
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    context.ContextOuterClass.Constraint getSliceConstraints(int index);
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    int getSliceConstraintsCount();
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
        getSliceConstraintsOrBuilderList();
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(
        int index);

    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    java.util.List<context.ContextOuterClass.ServiceId> 
        getSliceServiceIdsList();
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    context.ContextOuterClass.ServiceId getSliceServiceIds(int index);
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    int getSliceServiceIdsCount();
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
        getSliceServiceIdsOrBuilderList();
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
        int index);

    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    java.util.List<context.ContextOuterClass.SliceId> 
        getSliceSubsliceIdsList();
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    context.ContextOuterClass.SliceId getSliceSubsliceIds(int index);
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    int getSliceSubsliceIdsCount();
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
        getSliceSubsliceIdsOrBuilderList();
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
        int index);

    /**
     * <code>.context.SliceStatus slice_status = 7;</code>
     * @return Whether the sliceStatus field is set.
     */
    boolean hasSliceStatus();
    /**
     * <code>.context.SliceStatus slice_status = 7;</code>
     * @return The sliceStatus.
     */
    context.ContextOuterClass.SliceStatus getSliceStatus();
    /**
     * <code>.context.SliceStatus slice_status = 7;</code>
     */
    context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder();

    /**
     * <code>.context.SliceConfig slice_config = 8;</code>
     * @return Whether the sliceConfig field is set.
     */
    boolean hasSliceConfig();
    /**
     * <code>.context.SliceConfig slice_config = 8;</code>
     * @return The sliceConfig.
     */
    context.ContextOuterClass.SliceConfig getSliceConfig();
    /**
     * <code>.context.SliceConfig slice_config = 8;</code>
     */
    context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder();

    /**
     * <code>.context.SliceOwner slice_owner = 9;</code>
     * @return Whether the sliceOwner field is set.
     */
    boolean hasSliceOwner();
    /**
     * <code>.context.SliceOwner slice_owner = 9;</code>
     * @return The sliceOwner.
     */
    context.ContextOuterClass.SliceOwner getSliceOwner();
    /**
     * <code>.context.SliceOwner slice_owner = 9;</code>
     */
    context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder();

    /**
     * <code>.context.Timestamp timestamp = 10;</code>
     * @return Whether the timestamp field is set.
     */
    boolean hasTimestamp();
    /**
     * <code>.context.Timestamp timestamp = 10;</code>
     * @return The timestamp.
     */
    context.ContextOuterClass.Timestamp getTimestamp();
    /**
     * <code>.context.Timestamp timestamp = 10;</code>
     */
    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
  }
  /**
   * Protobuf type {@code context.Slice}
   */
  public static final class Slice extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Slice)
      SliceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Slice.newBuilder() to construct.
    private Slice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Slice() {
      name_ = "";
      sliceEndpointIds_ = java.util.Collections.emptyList();
      sliceConstraints_ = java.util.Collections.emptyList();
      sliceServiceIds_ = java.util.Collections.emptyList();
      sliceSubsliceIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Slice();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Slice(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.SliceId.Builder subBuilder = null;
              if (sliceId_ != null) {
                subBuilder = sliceId_.toBuilder();
              }
              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sliceId_);
                sliceId_ = subBuilder.buildPartial();
              }

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

              name_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
                mutable_bitField0_ |= 0x00000001;
              }
              sliceEndpointIds_.add(
                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
                mutable_bitField0_ |= 0x00000002;
              }
              sliceConstraints_.add(
                  input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
                mutable_bitField0_ |= 0x00000004;
              }
              sliceServiceIds_.add(
                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000008) != 0)) {
                sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
                mutable_bitField0_ |= 0x00000008;
              }
              sliceSubsliceIds_.add(
                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
              break;
            }
            case 58: {
              context.ContextOuterClass.SliceStatus.Builder subBuilder = null;
              if (sliceStatus_ != null) {
                subBuilder = sliceStatus_.toBuilder();
              }
              sliceStatus_ = input.readMessage(context.ContextOuterClass.SliceStatus.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sliceStatus_);
                sliceStatus_ = subBuilder.buildPartial();
              }

              break;
            }
            case 66: {
              context.ContextOuterClass.SliceConfig.Builder subBuilder = null;
              if (sliceConfig_ != null) {
                subBuilder = sliceConfig_.toBuilder();
              }
              sliceConfig_ = input.readMessage(context.ContextOuterClass.SliceConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sliceConfig_);
                sliceConfig_ = subBuilder.buildPartial();
              }

              break;
            }
            case 74: {
              context.ContextOuterClass.SliceOwner.Builder subBuilder = null;
              if (sliceOwner_ != null) {
                subBuilder = sliceOwner_.toBuilder();
              }
              sliceOwner_ = input.readMessage(context.ContextOuterClass.SliceOwner.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sliceOwner_);
                sliceOwner_ = subBuilder.buildPartial();
              }

              break;
            }
            case 82: {
              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
              if (timestamp_ != null) {
                subBuilder = timestamp_.toBuilder();
              }
              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(timestamp_);
                timestamp_ = subBuilder.buildPartial();
              }

              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
        }
        if (((mutable_bitField0_ & 0x00000004) != 0)) {
          sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
        }
        if (((mutable_bitField0_ & 0x00000008) != 0)) {
          sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Slice_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
    }

    public static final int SLICE_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.SliceId sliceId_;
    /**
     * <code>.context.SliceId slice_id = 1;</code>
     * @return Whether the sliceId field is set.
     */
    @java.lang.Override
    public boolean hasSliceId() {
      return sliceId_ != null;
    }
    /**
     * <code>.context.SliceId slice_id = 1;</code>
     * @return The sliceId.
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceId getSliceId() {
      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
    }
    /**
     * <code>.context.SliceId slice_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
      return getSliceId();
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SLICE_ENDPOINT_IDS_FIELD_NUMBER = 3;
    private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_;
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
      return sliceEndpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getSliceEndpointIdsOrBuilderList() {
      return sliceEndpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public int getSliceEndpointIdsCount() {
      return sliceEndpointIds_.size();
    }
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
      return sliceEndpointIds_.get(index);
    }
    /**
     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(
        int index) {
      return sliceEndpointIds_.get(index);
    }

    public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 4;
    private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_;
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
      return sliceConstraints_;
    }
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
        getSliceConstraintsOrBuilderList() {
      return sliceConstraints_;
    }
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    @java.lang.Override
    public int getSliceConstraintsCount() {
      return sliceConstraints_.size();
    }
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
      return sliceConstraints_.get(index);
    }
    /**
     * <code>repeated .context.Constraint slice_constraints = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(
        int index) {
      return sliceConstraints_.get(index);
    }

    public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 5;
    private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_;
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
      return sliceServiceIds_;
    }
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
        getSliceServiceIdsOrBuilderList() {
      return sliceServiceIds_;
    }
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    @java.lang.Override
    public int getSliceServiceIdsCount() {
      return sliceServiceIds_.size();
    }
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
      return sliceServiceIds_.get(index);
    }
    /**
     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
        int index) {
      return sliceServiceIds_.get(index);
    }

    public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;
    private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_;
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
      return sliceSubsliceIds_;
    }
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
        getSliceSubsliceIdsOrBuilderList() {
      return sliceSubsliceIds_;
    }
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    @java.lang.Override
    public int getSliceSubsliceIdsCount() {
      return sliceSubsliceIds_.size();
    }
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
      return sliceSubsliceIds_.get(index);
    }
    /**
     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
        int index) {
      return sliceSubsliceIds_.get(index);
    }

    public static final int SLICE_STATUS_FIELD_NUMBER = 7;
    private context.ContextOuterClass.SliceStatus sliceStatus_;
    /**
     * <code>.context.SliceStatus slice_status = 7;</code>
     * @return Whether the sliceStatus field is set.
     */
    @java.lang.Override
    public boolean hasSliceStatus() {
      return sliceStatus_ != null;
    }
    /**
     * <code>.context.SliceStatus slice_status = 7;</code>
     * @return The sliceStatus.
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceStatus getSliceStatus() {
      return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
    }
    /**
     * <code>.context.SliceStatus slice_status = 7;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
      return getSliceStatus();
    }

    public static final int SLICE_CONFIG_FIELD_NUMBER = 8;
    private context.ContextOuterClass.SliceConfig sliceConfig_;
    /**
     * <code>.context.SliceConfig slice_config = 8;</code>
     * @return Whether the sliceConfig field is set.
     */
    @java.lang.Override
    public boolean hasSliceConfig() {
      return sliceConfig_ != null;
    }
    /**
     * <code>.context.SliceConfig slice_config = 8;</code>
     * @return The sliceConfig.
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceConfig getSliceConfig() {
      return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
    }
    /**
     * <code>.context.SliceConfig slice_config = 8;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
      return getSliceConfig();
    }

    public static final int SLICE_OWNER_FIELD_NUMBER = 9;
    private context.ContextOuterClass.SliceOwner sliceOwner_;
    /**
     * <code>.context.SliceOwner slice_owner = 9;</code>
     * @return Whether the sliceOwner field is set.
     */
    @java.lang.Override
    public boolean hasSliceOwner() {
      return sliceOwner_ != null;
    }
    /**
     * <code>.context.SliceOwner slice_owner = 9;</code>
     * @return The sliceOwner.
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceOwner getSliceOwner() {
      return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
    }
    /**
     * <code>.context.SliceOwner slice_owner = 9;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
      return getSliceOwner();
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 10;
    private context.ContextOuterClass.Timestamp timestamp_;
    /**
     * <code>.context.Timestamp timestamp = 10;</code>
     * @return Whether the timestamp field is set.
     */
    @java.lang.Override
    public boolean hasTimestamp() {
      return timestamp_ != null;
    }
    /**
     * <code>.context.Timestamp timestamp = 10;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public context.ContextOuterClass.Timestamp getTimestamp() {
      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
    }
    /**
     * <code>.context.Timestamp timestamp = 10;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
      return getTimestamp();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (sliceId_ != null) {
        output.writeMessage(1, getSliceId());
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      for (int i = 0; i < sliceEndpointIds_.size(); i++) {
        output.writeMessage(3, sliceEndpointIds_.get(i));
      }
      for (int i = 0; i < sliceConstraints_.size(); i++) {
        output.writeMessage(4, sliceConstraints_.get(i));
      }
      for (int i = 0; i < sliceServiceIds_.size(); i++) {
        output.writeMessage(5, sliceServiceIds_.get(i));
      }
      for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
        output.writeMessage(6, sliceSubsliceIds_.get(i));
      }
      if (sliceStatus_ != null) {
        output.writeMessage(7, getSliceStatus());
      }
      if (sliceConfig_ != null) {
        output.writeMessage(8, getSliceConfig());
      }
      if (sliceOwner_ != null) {
        output.writeMessage(9, getSliceOwner());
      }
      if (timestamp_ != null) {
        output.writeMessage(10, getTimestamp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (sliceId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSliceId());
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      for (int i = 0; i < sliceEndpointIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, sliceEndpointIds_.get(i));
      }
      for (int i = 0; i < sliceConstraints_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, sliceConstraints_.get(i));
      }
      for (int i = 0; i < sliceServiceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, sliceServiceIds_.get(i));
      }
      for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, sliceSubsliceIds_.get(i));
      }
      if (sliceStatus_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getSliceStatus());
      }
      if (sliceConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getSliceConfig());
      }
      if (sliceOwner_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getSliceOwner());
      }
      if (timestamp_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getTimestamp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Slice)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Slice other = (context.ContextOuterClass.Slice) obj;

      if (hasSliceId() != other.hasSliceId()) return false;
      if (hasSliceId()) {
        if (!getSliceId()
            .equals(other.getSliceId())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (!getSliceEndpointIdsList()
          .equals(other.getSliceEndpointIdsList())) return false;
      if (!getSliceConstraintsList()
          .equals(other.getSliceConstraintsList())) return false;
      if (!getSliceServiceIdsList()
          .equals(other.getSliceServiceIdsList())) return false;
      if (!getSliceSubsliceIdsList()
          .equals(other.getSliceSubsliceIdsList())) return false;
      if (hasSliceStatus() != other.hasSliceStatus()) return false;
      if (hasSliceStatus()) {
        if (!getSliceStatus()
            .equals(other.getSliceStatus())) return false;
      }
      if (hasSliceConfig() != other.hasSliceConfig()) return false;
      if (hasSliceConfig()) {
        if (!getSliceConfig()
            .equals(other.getSliceConfig())) return false;
      }
      if (hasSliceOwner() != other.hasSliceOwner()) return false;
      if (hasSliceOwner()) {
        if (!getSliceOwner()
            .equals(other.getSliceOwner())) return false;
      }
      if (hasTimestamp() != other.hasTimestamp()) return false;
      if (hasTimestamp()) {
        if (!getTimestamp()
            .equals(other.getTimestamp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSliceId()) {
        hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getSliceId().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getSliceEndpointIdsCount() > 0) {
        hash = (37 * hash) + SLICE_ENDPOINT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getSliceEndpointIdsList().hashCode();
      }
      if (getSliceConstraintsCount() > 0) {
        hash = (37 * hash) + SLICE_CONSTRAINTS_FIELD_NUMBER;
        hash = (53 * hash) + getSliceConstraintsList().hashCode();
      }
      if (getSliceServiceIdsCount() > 0) {
        hash = (37 * hash) + SLICE_SERVICE_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getSliceServiceIdsList().hashCode();
      }
      if (getSliceSubsliceIdsCount() > 0) {
        hash = (37 * hash) + SLICE_SUBSLICE_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getSliceSubsliceIdsList().hashCode();
      }
      if (hasSliceStatus()) {
        hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getSliceStatus().hashCode();
      }
      if (hasSliceConfig()) {
        hash = (37 * hash) + SLICE_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getSliceConfig().hashCode();
      }
      if (hasSliceOwner()) {
        hash = (37 * hash) + SLICE_OWNER_FIELD_NUMBER;
        hash = (53 * hash) + getSliceOwner().hashCode();
      }
      if (hasTimestamp()) {
        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getTimestamp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Slice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Slice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Slice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Slice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Slice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Slice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Slice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Slice 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 context.ContextOuterClass.Slice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Slice 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 context.ContextOuterClass.Slice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Slice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Slice prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Slice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Slice)
        context.ContextOuterClass.SliceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Slice_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
      }

      // Construct using context.ContextOuterClass.Slice.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSliceEndpointIdsFieldBuilder();
          getSliceConstraintsFieldBuilder();
          getSliceServiceIdsFieldBuilder();
          getSliceSubsliceIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (sliceIdBuilder_ == null) {
          sliceId_ = null;
        } else {
          sliceId_ = null;
          sliceIdBuilder_ = null;
        }
        name_ = "";

        if (sliceEndpointIdsBuilder_ == null) {
          sliceEndpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          sliceEndpointIdsBuilder_.clear();
        }
        if (sliceConstraintsBuilder_ == null) {
          sliceConstraints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          sliceConstraintsBuilder_.clear();
        }
        if (sliceServiceIdsBuilder_ == null) {
          sliceServiceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          sliceServiceIdsBuilder_.clear();
        }
        if (sliceSubsliceIdsBuilder_ == null) {
          sliceSubsliceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          sliceSubsliceIdsBuilder_.clear();
        }
        if (sliceStatusBuilder_ == null) {
          sliceStatus_ = null;
        } else {
          sliceStatus_ = null;
          sliceStatusBuilder_ = null;
        }
        if (sliceConfigBuilder_ == null) {
          sliceConfig_ = null;
        } else {
          sliceConfig_ = null;
          sliceConfigBuilder_ = null;
        }
        if (sliceOwnerBuilder_ == null) {
          sliceOwner_ = null;
        } else {
          sliceOwner_ = null;
          sliceOwnerBuilder_ = null;
        }
        if (timestampBuilder_ == null) {
          timestamp_ = null;
        } else {
          timestamp_ = null;
          timestampBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Slice_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Slice getDefaultInstanceForType() {
        return context.ContextOuterClass.Slice.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Slice build() {
        context.ContextOuterClass.Slice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Slice buildPartial() {
        context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
        int from_bitField0_ = bitField0_;
        if (sliceIdBuilder_ == null) {
          result.sliceId_ = sliceId_;
        } else {
          result.sliceId_ = sliceIdBuilder_.build();
        }
        result.name_ = name_;
        if (sliceEndpointIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sliceEndpointIds_ = sliceEndpointIds_;
        } else {
          result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
        }
        if (sliceConstraintsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.sliceConstraints_ = sliceConstraints_;
        } else {
          result.sliceConstraints_ = sliceConstraintsBuilder_.build();
        }
        if (sliceServiceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.sliceServiceIds_ = sliceServiceIds_;
        } else {
          result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
        }
        if (sliceSubsliceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.sliceSubsliceIds_ = sliceSubsliceIds_;
        } else {
          result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
        }
        if (sliceStatusBuilder_ == null) {
          result.sliceStatus_ = sliceStatus_;
        } else {
          result.sliceStatus_ = sliceStatusBuilder_.build();
        }
        if (sliceConfigBuilder_ == null) {
          result.sliceConfig_ = sliceConfig_;
        } else {
          result.sliceConfig_ = sliceConfigBuilder_.build();
        }
        if (sliceOwnerBuilder_ == null) {
          result.sliceOwner_ = sliceOwner_;
        } else {
          result.sliceOwner_ = sliceOwnerBuilder_.build();
        }
        if (timestampBuilder_ == null) {
          result.timestamp_ = timestamp_;
        } else {
          result.timestamp_ = timestampBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Slice) {
          return mergeFrom((context.ContextOuterClass.Slice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Slice other) {
        if (other == context.ContextOuterClass.Slice.getDefaultInstance()) return this;
        if (other.hasSliceId()) {
          mergeSliceId(other.getSliceId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (sliceEndpointIdsBuilder_ == null) {
          if (!other.sliceEndpointIds_.isEmpty()) {
            if (sliceEndpointIds_.isEmpty()) {
              sliceEndpointIds_ = other.sliceEndpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSliceEndpointIdsIsMutable();
              sliceEndpointIds_.addAll(other.sliceEndpointIds_);
            }
            onChanged();
          }
        } else {
          if (!other.sliceEndpointIds_.isEmpty()) {
            if (sliceEndpointIdsBuilder_.isEmpty()) {
              sliceEndpointIdsBuilder_.dispose();
              sliceEndpointIdsBuilder_ = null;
              sliceEndpointIds_ = other.sliceEndpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              sliceEndpointIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSliceEndpointIdsFieldBuilder() : null;
            } else {
              sliceEndpointIdsBuilder_.addAllMessages(other.sliceEndpointIds_);
            }
          }
        }
        if (sliceConstraintsBuilder_ == null) {
          if (!other.sliceConstraints_.isEmpty()) {
            if (sliceConstraints_.isEmpty()) {
              sliceConstraints_ = other.sliceConstraints_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSliceConstraintsIsMutable();
              sliceConstraints_.addAll(other.sliceConstraints_);
            }
            onChanged();
          }
        } else {
          if (!other.sliceConstraints_.isEmpty()) {
            if (sliceConstraintsBuilder_.isEmpty()) {
              sliceConstraintsBuilder_.dispose();
              sliceConstraintsBuilder_ = null;
              sliceConstraints_ = other.sliceConstraints_;
              bitField0_ = (bitField0_ & ~0x00000002);
              sliceConstraintsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSliceConstraintsFieldBuilder() : null;
            } else {
              sliceConstraintsBuilder_.addAllMessages(other.sliceConstraints_);
            }
          }
        }
        if (sliceServiceIdsBuilder_ == null) {
          if (!other.sliceServiceIds_.isEmpty()) {
            if (sliceServiceIds_.isEmpty()) {
              sliceServiceIds_ = other.sliceServiceIds_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureSliceServiceIdsIsMutable();
              sliceServiceIds_.addAll(other.sliceServiceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.sliceServiceIds_.isEmpty()) {
            if (sliceServiceIdsBuilder_.isEmpty()) {
              sliceServiceIdsBuilder_.dispose();
              sliceServiceIdsBuilder_ = null;
              sliceServiceIds_ = other.sliceServiceIds_;
              bitField0_ = (bitField0_ & ~0x00000004);
              sliceServiceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSliceServiceIdsFieldBuilder() : null;
            } else {
              sliceServiceIdsBuilder_.addAllMessages(other.sliceServiceIds_);
            }
          }
        }
        if (sliceSubsliceIdsBuilder_ == null) {
          if (!other.sliceSubsliceIds_.isEmpty()) {
            if (sliceSubsliceIds_.isEmpty()) {
              sliceSubsliceIds_ = other.sliceSubsliceIds_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureSliceSubsliceIdsIsMutable();
              sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.sliceSubsliceIds_.isEmpty()) {
            if (sliceSubsliceIdsBuilder_.isEmpty()) {
              sliceSubsliceIdsBuilder_.dispose();
              sliceSubsliceIdsBuilder_ = null;
              sliceSubsliceIds_ = other.sliceSubsliceIds_;
              bitField0_ = (bitField0_ & ~0x00000008);
              sliceSubsliceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSliceSubsliceIdsFieldBuilder() : null;
            } else {
              sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
            }
          }
        }
        if (other.hasSliceStatus()) {
          mergeSliceStatus(other.getSliceStatus());
        }
        if (other.hasSliceConfig()) {
          mergeSliceConfig(other.getSliceConfig());
        }
        if (other.hasSliceOwner()) {
          mergeSliceOwner(other.getSliceOwner());
        }
        if (other.hasTimestamp()) {
          mergeTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Slice parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Slice) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.SliceId sliceId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       * @return Whether the sliceId field is set.
       */
      public boolean hasSliceId() {
        return sliceIdBuilder_ != null || sliceId_ != null;
      }
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       * @return The sliceId.
       */
      public context.ContextOuterClass.SliceId getSliceId() {
        if (sliceIdBuilder_ == null) {
          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
        } else {
          return sliceIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       */
      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
        if (sliceIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sliceId_ = value;
          onChanged();
        } else {
          sliceIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       */
      public Builder setSliceId(
          context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceIdBuilder_ == null) {
          sliceId_ = builderForValue.build();
          onChanged();
        } else {
          sliceIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       */
      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
        if (sliceIdBuilder_ == null) {
          if (sliceId_ != null) {
            sliceId_ =
              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
          } else {
            sliceId_ = value;
          }
          onChanged();
        } else {
          sliceIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       */
      public Builder clearSliceId() {
        if (sliceIdBuilder_ == null) {
          sliceId_ = null;
          onChanged();
        } else {
          sliceId_ = null;
          sliceIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       */
      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
        
        onChanged();
        return getSliceIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       */
      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
        if (sliceIdBuilder_ != null) {
          return sliceIdBuilder_.getMessageOrBuilder();
        } else {
          return sliceId_ == null ?
              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
        }
      }
      /**
       * <code>.context.SliceId slice_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
          getSliceIdFieldBuilder() {
        if (sliceIdBuilder_ == null) {
          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
                  getSliceId(),
                  getParentForChildren(),
                  isClean());
          sliceId_ = null;
        }
        return sliceIdBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_ =
        java.util.Collections.emptyList();
      private void ensureSliceEndpointIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(sliceEndpointIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> sliceEndpointIdsBuilder_;

      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
        if (sliceEndpointIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sliceEndpointIds_);
        } else {
          return sliceEndpointIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public int getSliceEndpointIdsCount() {
        if (sliceEndpointIdsBuilder_ == null) {
          return sliceEndpointIds_.size();
        } else {
          return sliceEndpointIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
        if (sliceEndpointIdsBuilder_ == null) {
          return sliceEndpointIds_.get(index);
        } else {
          return sliceEndpointIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder setSliceEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (sliceEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceEndpointIdsIsMutable();
          sliceEndpointIds_.set(index, value);
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder setSliceEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (sliceEndpointIdsBuilder_ == null) {
          ensureSliceEndpointIdsIsMutable();
          sliceEndpointIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder addSliceEndpointIds(context.ContextOuterClass.EndPointId value) {
        if (sliceEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceEndpointIdsIsMutable();
          sliceEndpointIds_.add(value);
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder addSliceEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (sliceEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceEndpointIdsIsMutable();
          sliceEndpointIds_.add(index, value);
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder addSliceEndpointIds(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (sliceEndpointIdsBuilder_ == null) {
          ensureSliceEndpointIdsIsMutable();
          sliceEndpointIds_.add(builderForValue.build());
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder addSliceEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (sliceEndpointIdsBuilder_ == null) {
          ensureSliceEndpointIdsIsMutable();
          sliceEndpointIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder addAllSliceEndpointIds(
          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
        if (sliceEndpointIdsBuilder_ == null) {
          ensureSliceEndpointIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sliceEndpointIds_);
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder clearSliceEndpointIds() {
        if (sliceEndpointIdsBuilder_ == null) {
          sliceEndpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public Builder removeSliceEndpointIds(int index) {
        if (sliceEndpointIdsBuilder_ == null) {
          ensureSliceEndpointIdsIsMutable();
          sliceEndpointIds_.remove(index);
          onChanged();
        } else {
          sliceEndpointIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getSliceEndpointIdsBuilder(
          int index) {
        return getSliceEndpointIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(
          int index) {
        if (sliceEndpointIdsBuilder_ == null) {
          return sliceEndpointIds_.get(index);  } else {
          return sliceEndpointIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
           getSliceEndpointIdsOrBuilderList() {
        if (sliceEndpointIdsBuilder_ != null) {
          return sliceEndpointIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sliceEndpointIds_);
        }
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder() {
        return getSliceEndpointIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder(
          int index) {
        return getSliceEndpointIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
           getSliceEndpointIdsBuilderList() {
        return getSliceEndpointIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getSliceEndpointIdsFieldBuilder() {
        if (sliceEndpointIdsBuilder_ == null) {
          sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  sliceEndpointIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sliceEndpointIds_ = null;
        }
        return sliceEndpointIdsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_ =
        java.util.Collections.emptyList();
      private void ensureSliceConstraintsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(sliceConstraints_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> sliceConstraintsBuilder_;

      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
        if (sliceConstraintsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sliceConstraints_);
        } else {
          return sliceConstraintsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public int getSliceConstraintsCount() {
        if (sliceConstraintsBuilder_ == null) {
          return sliceConstraints_.size();
        } else {
          return sliceConstraintsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
        if (sliceConstraintsBuilder_ == null) {
          return sliceConstraints_.get(index);
        } else {
          return sliceConstraintsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder setSliceConstraints(
          int index, context.ContextOuterClass.Constraint value) {
        if (sliceConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceConstraintsIsMutable();
          sliceConstraints_.set(index, value);
          onChanged();
        } else {
          sliceConstraintsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder setSliceConstraints(
          int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
        if (sliceConstraintsBuilder_ == null) {
          ensureSliceConstraintsIsMutable();
          sliceConstraints_.set(index, builderForValue.build());
          onChanged();
        } else {
          sliceConstraintsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder addSliceConstraints(context.ContextOuterClass.Constraint value) {
        if (sliceConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceConstraintsIsMutable();
          sliceConstraints_.add(value);
          onChanged();
        } else {
          sliceConstraintsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder addSliceConstraints(
          int index, context.ContextOuterClass.Constraint value) {
        if (sliceConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceConstraintsIsMutable();
          sliceConstraints_.add(index, value);
          onChanged();
        } else {
          sliceConstraintsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder addSliceConstraints(
          context.ContextOuterClass.Constraint.Builder builderForValue) {
        if (sliceConstraintsBuilder_ == null) {
          ensureSliceConstraintsIsMutable();
          sliceConstraints_.add(builderForValue.build());
          onChanged();
        } else {
          sliceConstraintsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder addSliceConstraints(
          int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
        if (sliceConstraintsBuilder_ == null) {
          ensureSliceConstraintsIsMutable();
          sliceConstraints_.add(index, builderForValue.build());
          onChanged();
        } else {
          sliceConstraintsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder addAllSliceConstraints(
          java.lang.Iterable<? extends context.ContextOuterClass.Constraint> values) {
        if (sliceConstraintsBuilder_ == null) {
          ensureSliceConstraintsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sliceConstraints_);
          onChanged();
        } else {
          sliceConstraintsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder clearSliceConstraints() {
        if (sliceConstraintsBuilder_ == null) {
          sliceConstraints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          sliceConstraintsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public Builder removeSliceConstraints(int index) {
        if (sliceConstraintsBuilder_ == null) {
          ensureSliceConstraintsIsMutable();
          sliceConstraints_.remove(index);
          onChanged();
        } else {
          sliceConstraintsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public context.ContextOuterClass.Constraint.Builder getSliceConstraintsBuilder(
          int index) {
        return getSliceConstraintsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(
          int index) {
        if (sliceConstraintsBuilder_ == null) {
          return sliceConstraints_.get(index);  } else {
          return sliceConstraintsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
           getSliceConstraintsOrBuilderList() {
        if (sliceConstraintsBuilder_ != null) {
          return sliceConstraintsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sliceConstraints_);
        }
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder() {
        return getSliceConstraintsFieldBuilder().addBuilder(
            context.ContextOuterClass.Constraint.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder(
          int index) {
        return getSliceConstraintsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Constraint.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Constraint slice_constraints = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.Constraint.Builder> 
           getSliceConstraintsBuilderList() {
        return getSliceConstraintsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> 
          getSliceConstraintsFieldBuilder() {
        if (sliceConstraintsBuilder_ == null) {
          sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(
                  sliceConstraints_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          sliceConstraints_ = null;
        }
        return sliceConstraintsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_ =
        java.util.Collections.emptyList();
      private void ensureSliceServiceIdsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(sliceServiceIds_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> sliceServiceIdsBuilder_;

      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
        if (sliceServiceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sliceServiceIds_);
        } else {
          return sliceServiceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public int getSliceServiceIdsCount() {
        if (sliceServiceIdsBuilder_ == null) {
          return sliceServiceIds_.size();
        } else {
          return sliceServiceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
        if (sliceServiceIdsBuilder_ == null) {
          return sliceServiceIds_.get(index);
        } else {
          return sliceServiceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder setSliceServiceIds(
          int index, context.ContextOuterClass.ServiceId value) {
        if (sliceServiceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceServiceIdsIsMutable();
          sliceServiceIds_.set(index, value);
          onChanged();
        } else {
          sliceServiceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder setSliceServiceIds(
          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (sliceServiceIdsBuilder_ == null) {
          ensureSliceServiceIdsIsMutable();
          sliceServiceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          sliceServiceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder addSliceServiceIds(context.ContextOuterClass.ServiceId value) {
        if (sliceServiceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceServiceIdsIsMutable();
          sliceServiceIds_.add(value);
          onChanged();
        } else {
          sliceServiceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder addSliceServiceIds(
          int index, context.ContextOuterClass.ServiceId value) {
        if (sliceServiceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceServiceIdsIsMutable();
          sliceServiceIds_.add(index, value);
          onChanged();
        } else {
          sliceServiceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder addSliceServiceIds(
          context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (sliceServiceIdsBuilder_ == null) {
          ensureSliceServiceIdsIsMutable();
          sliceServiceIds_.add(builderForValue.build());
          onChanged();
        } else {
          sliceServiceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder addSliceServiceIds(
          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (sliceServiceIdsBuilder_ == null) {
          ensureSliceServiceIdsIsMutable();
          sliceServiceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          sliceServiceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder addAllSliceServiceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
        if (sliceServiceIdsBuilder_ == null) {
          ensureSliceServiceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sliceServiceIds_);
          onChanged();
        } else {
          sliceServiceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder clearSliceServiceIds() {
        if (sliceServiceIdsBuilder_ == null) {
          sliceServiceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          sliceServiceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public Builder removeSliceServiceIds(int index) {
        if (sliceServiceIdsBuilder_ == null) {
          ensureSliceServiceIdsIsMutable();
          sliceServiceIds_.remove(index);
          onChanged();
        } else {
          sliceServiceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder getSliceServiceIdsBuilder(
          int index) {
        return getSliceServiceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
          int index) {
        if (sliceServiceIdsBuilder_ == null) {
          return sliceServiceIds_.get(index);  } else {
          return sliceServiceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
           getSliceServiceIdsOrBuilderList() {
        if (sliceServiceIdsBuilder_ != null) {
          return sliceServiceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sliceServiceIds_);
        }
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder() {
        return getSliceServiceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.ServiceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder(
          int index) {
        return getSliceServiceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
       */
      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
           getSliceServiceIdsBuilderList() {
        return getSliceServiceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
          getSliceServiceIdsFieldBuilder() {
        if (sliceServiceIdsBuilder_ == null) {
          sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
                  sliceServiceIds_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          sliceServiceIds_ = null;
        }
        return sliceServiceIdsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ =
        java.util.Collections.emptyList();
      private void ensureSliceSubsliceIdsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceSubsliceIdsBuilder_;

      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
        if (sliceSubsliceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
        } else {
          return sliceSubsliceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public int getSliceSubsliceIdsCount() {
        if (sliceSubsliceIdsBuilder_ == null) {
          return sliceSubsliceIds_.size();
        } else {
          return sliceSubsliceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
        if (sliceSubsliceIdsBuilder_ == null) {
          return sliceSubsliceIds_.get(index);
        } else {
          return sliceSubsliceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder setSliceSubsliceIds(
          int index, context.ContextOuterClass.SliceId value) {
        if (sliceSubsliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceSubsliceIdsIsMutable();
          sliceSubsliceIds_.set(index, value);
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder setSliceSubsliceIds(
          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceSubsliceIdsBuilder_ == null) {
          ensureSliceSubsliceIdsIsMutable();
          sliceSubsliceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder addSliceSubsliceIds(context.ContextOuterClass.SliceId value) {
        if (sliceSubsliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceSubsliceIdsIsMutable();
          sliceSubsliceIds_.add(value);
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder addSliceSubsliceIds(
          int index, context.ContextOuterClass.SliceId value) {
        if (sliceSubsliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceSubsliceIdsIsMutable();
          sliceSubsliceIds_.add(index, value);
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder addSliceSubsliceIds(
          context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceSubsliceIdsBuilder_ == null) {
          ensureSliceSubsliceIdsIsMutable();
          sliceSubsliceIds_.add(builderForValue.build());
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder addSliceSubsliceIds(
          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceSubsliceIdsBuilder_ == null) {
          ensureSliceSubsliceIdsIsMutable();
          sliceSubsliceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder addAllSliceSubsliceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
        if (sliceSubsliceIdsBuilder_ == null) {
          ensureSliceSubsliceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sliceSubsliceIds_);
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder clearSliceSubsliceIds() {
        if (sliceSubsliceIdsBuilder_ == null) {
          sliceSubsliceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public Builder removeSliceSubsliceIds(int index) {
        if (sliceSubsliceIdsBuilder_ == null) {
          ensureSliceSubsliceIdsIsMutable();
          sliceSubsliceIds_.remove(index);
          onChanged();
        } else {
          sliceSubsliceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public context.ContextOuterClass.SliceId.Builder getSliceSubsliceIdsBuilder(
          int index) {
        return getSliceSubsliceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
          int index) {
        if (sliceSubsliceIdsBuilder_ == null) {
          return sliceSubsliceIds_.get(index);  } else {
          return sliceSubsliceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
           getSliceSubsliceIdsOrBuilderList() {
        if (sliceSubsliceIdsBuilder_ != null) {
          return sliceSubsliceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder() {
        return getSliceSubsliceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.SliceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder(
          int index) {
        return getSliceSubsliceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.SliceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
       */
      public java.util.List<context.ContextOuterClass.SliceId.Builder> 
           getSliceSubsliceIdsBuilderList() {
        return getSliceSubsliceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
          getSliceSubsliceIdsFieldBuilder() {
        if (sliceSubsliceIdsBuilder_ == null) {
          sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
                  sliceSubsliceIds_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          sliceSubsliceIds_ = null;
        }
        return sliceSubsliceIdsBuilder_;
      }

      private context.ContextOuterClass.SliceStatus sliceStatus_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder> sliceStatusBuilder_;
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       * @return Whether the sliceStatus field is set.
       */
      public boolean hasSliceStatus() {
        return sliceStatusBuilder_ != null || sliceStatus_ != null;
      }
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       * @return The sliceStatus.
       */
      public context.ContextOuterClass.SliceStatus getSliceStatus() {
        if (sliceStatusBuilder_ == null) {
          return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
        } else {
          return sliceStatusBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       */
      public Builder setSliceStatus(context.ContextOuterClass.SliceStatus value) {
        if (sliceStatusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sliceStatus_ = value;
          onChanged();
        } else {
          sliceStatusBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       */
      public Builder setSliceStatus(
          context.ContextOuterClass.SliceStatus.Builder builderForValue) {
        if (sliceStatusBuilder_ == null) {
          sliceStatus_ = builderForValue.build();
          onChanged();
        } else {
          sliceStatusBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       */
      public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
        if (sliceStatusBuilder_ == null) {
          if (sliceStatus_ != null) {
            sliceStatus_ =
              context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
          } else {
            sliceStatus_ = value;
          }
          onChanged();
        } else {
          sliceStatusBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       */
      public Builder clearSliceStatus() {
        if (sliceStatusBuilder_ == null) {
          sliceStatus_ = null;
          onChanged();
        } else {
          sliceStatus_ = null;
          sliceStatusBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       */
      public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
        
        onChanged();
        return getSliceStatusFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       */
      public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
        if (sliceStatusBuilder_ != null) {
          return sliceStatusBuilder_.getMessageOrBuilder();
        } else {
          return sliceStatus_ == null ?
              context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
        }
      }
      /**
       * <code>.context.SliceStatus slice_status = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder> 
          getSliceStatusFieldBuilder() {
        if (sliceStatusBuilder_ == null) {
          sliceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder>(
                  getSliceStatus(),
                  getParentForChildren(),
                  isClean());
          sliceStatus_ = null;
        }
        return sliceStatusBuilder_;
      }

      private context.ContextOuterClass.SliceConfig sliceConfig_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> sliceConfigBuilder_;
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       * @return Whether the sliceConfig field is set.
       */
      public boolean hasSliceConfig() {
        return sliceConfigBuilder_ != null || sliceConfig_ != null;
      }
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       * @return The sliceConfig.
       */
      public context.ContextOuterClass.SliceConfig getSliceConfig() {
        if (sliceConfigBuilder_ == null) {
          return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
        } else {
          return sliceConfigBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       */
      public Builder setSliceConfig(context.ContextOuterClass.SliceConfig value) {
        if (sliceConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sliceConfig_ = value;
          onChanged();
        } else {
          sliceConfigBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       */
      public Builder setSliceConfig(
          context.ContextOuterClass.SliceConfig.Builder builderForValue) {
        if (sliceConfigBuilder_ == null) {
          sliceConfig_ = builderForValue.build();
          onChanged();
        } else {
          sliceConfigBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       */
      public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
        if (sliceConfigBuilder_ == null) {
          if (sliceConfig_ != null) {
            sliceConfig_ =
              context.ContextOuterClass.SliceConfig.newBuilder(sliceConfig_).mergeFrom(value).buildPartial();
          } else {
            sliceConfig_ = value;
          }
          onChanged();
        } else {
          sliceConfigBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       */
      public Builder clearSliceConfig() {
        if (sliceConfigBuilder_ == null) {
          sliceConfig_ = null;
          onChanged();
        } else {
          sliceConfig_ = null;
          sliceConfigBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       */
      public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
        
        onChanged();
        return getSliceConfigFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       */
      public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
        if (sliceConfigBuilder_ != null) {
          return sliceConfigBuilder_.getMessageOrBuilder();
        } else {
          return sliceConfig_ == null ?
              context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
        }
      }
      /**
       * <code>.context.SliceConfig slice_config = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> 
          getSliceConfigFieldBuilder() {
        if (sliceConfigBuilder_ == null) {
          sliceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder>(
                  getSliceConfig(),
                  getParentForChildren(),
                  isClean());
          sliceConfig_ = null;
        }
        return sliceConfigBuilder_;
      }

      private context.ContextOuterClass.SliceOwner sliceOwner_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder> sliceOwnerBuilder_;
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       * @return Whether the sliceOwner field is set.
       */
      public boolean hasSliceOwner() {
        return sliceOwnerBuilder_ != null || sliceOwner_ != null;
      }
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       * @return The sliceOwner.
       */
      public context.ContextOuterClass.SliceOwner getSliceOwner() {
        if (sliceOwnerBuilder_ == null) {
          return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
        } else {
          return sliceOwnerBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       */
      public Builder setSliceOwner(context.ContextOuterClass.SliceOwner value) {
        if (sliceOwnerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sliceOwner_ = value;
          onChanged();
        } else {
          sliceOwnerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       */
      public Builder setSliceOwner(
          context.ContextOuterClass.SliceOwner.Builder builderForValue) {
        if (sliceOwnerBuilder_ == null) {
          sliceOwner_ = builderForValue.build();
          onChanged();
        } else {
          sliceOwnerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       */
      public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
        if (sliceOwnerBuilder_ == null) {
          if (sliceOwner_ != null) {
            sliceOwner_ =
              context.ContextOuterClass.SliceOwner.newBuilder(sliceOwner_).mergeFrom(value).buildPartial();
          } else {
            sliceOwner_ = value;
          }
          onChanged();
        } else {
          sliceOwnerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       */
      public Builder clearSliceOwner() {
        if (sliceOwnerBuilder_ == null) {
          sliceOwner_ = null;
          onChanged();
        } else {
          sliceOwner_ = null;
          sliceOwnerBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       */
      public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
        
        onChanged();
        return getSliceOwnerFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       */
      public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
        if (sliceOwnerBuilder_ != null) {
          return sliceOwnerBuilder_.getMessageOrBuilder();
        } else {
          return sliceOwner_ == null ?
              context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
        }
      }
      /**
       * <code>.context.SliceOwner slice_owner = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder> 
          getSliceOwnerFieldBuilder() {
        if (sliceOwnerBuilder_ == null) {
          sliceOwnerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder>(
                  getSliceOwner(),
                  getParentForChildren(),
                  isClean());
          sliceOwner_ = null;
        }
        return sliceOwnerBuilder_;
      }

      private context.ContextOuterClass.Timestamp timestamp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       * @return Whether the timestamp field is set.
       */
      public boolean hasTimestamp() {
        return timestampBuilder_ != null || timestamp_ != null;
      }
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       * @return The timestamp.
       */
      public context.ContextOuterClass.Timestamp getTimestamp() {
        if (timestampBuilder_ == null) {
          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        } else {
          return timestampBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       */
      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
        if (timestampBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timestamp_ = value;
          onChanged();
        } else {
          timestampBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       */
      public Builder setTimestamp(
          context.ContextOuterClass.Timestamp.Builder builderForValue) {
        if (timestampBuilder_ == null) {
          timestamp_ = builderForValue.build();
          onChanged();
        } else {
          timestampBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       */
      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
        if (timestampBuilder_ == null) {
          if (timestamp_ != null) {
            timestamp_ =
              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
          } else {
            timestamp_ = value;
          }
          onChanged();
        } else {
          timestampBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       */
      public Builder clearTimestamp() {
        if (timestampBuilder_ == null) {
          timestamp_ = null;
          onChanged();
        } else {
          timestamp_ = null;
          timestampBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       */
      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
        
        onChanged();
        return getTimestampFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       */
      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
        if (timestampBuilder_ != null) {
          return timestampBuilder_.getMessageOrBuilder();
        } else {
          return timestamp_ == null ?
              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }
      }
      /**
       * <code>.context.Timestamp timestamp = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
          getTimestampFieldBuilder() {
        if (timestampBuilder_ == null) {
          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
                  getTimestamp(),
                  getParentForChildren(),
                  isClean());
          timestamp_ = null;
        }
        return timestampBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Slice)
    }

    // @@protoc_insertion_point(class_scope:context.Slice)
    private static final context.ContextOuterClass.Slice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Slice();
    }

    public static context.ContextOuterClass.Slice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Slice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SliceOwnerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.SliceOwner)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Uuid owner_uuid = 1;</code>
     * @return Whether the ownerUuid field is set.
     */
    boolean hasOwnerUuid();
    /**
     * <code>.context.Uuid owner_uuid = 1;</code>
     * @return The ownerUuid.
     */
    context.ContextOuterClass.Uuid getOwnerUuid();
    /**
     * <code>.context.Uuid owner_uuid = 1;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder();

    /**
     * <code>string owner_string = 2;</code>
     * @return The ownerString.
     */
    java.lang.String getOwnerString();
    /**
     * <code>string owner_string = 2;</code>
     * @return The bytes for ownerString.
     */
    com.google.protobuf.ByteString
        getOwnerStringBytes();
  }
  /**
   * Protobuf type {@code context.SliceOwner}
   */
  public static final class SliceOwner extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.SliceOwner)
      SliceOwnerOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SliceOwner.newBuilder() to construct.
    private SliceOwner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SliceOwner() {
      ownerString_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SliceOwner();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SliceOwner(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (ownerUuid_ != null) {
                subBuilder = ownerUuid_.toBuilder();
              }
              ownerUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(ownerUuid_);
                ownerUuid_ = subBuilder.buildPartial();
              }

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

              ownerString_ = s;
              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 context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
    }

    public static final int OWNER_UUID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Uuid ownerUuid_;
    /**
     * <code>.context.Uuid owner_uuid = 1;</code>
     * @return Whether the ownerUuid field is set.
     */
    @java.lang.Override
    public boolean hasOwnerUuid() {
      return ownerUuid_ != null;
    }
    /**
     * <code>.context.Uuid owner_uuid = 1;</code>
     * @return The ownerUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getOwnerUuid() {
      return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
    }
    /**
     * <code>.context.Uuid owner_uuid = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
      return getOwnerUuid();
    }

    public static final int OWNER_STRING_FIELD_NUMBER = 2;
    private volatile java.lang.Object ownerString_;
    /**
     * <code>string owner_string = 2;</code>
     * @return The ownerString.
     */
    @java.lang.Override
    public java.lang.String getOwnerString() {
      java.lang.Object ref = ownerString_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        ownerString_ = s;
        return s;
      }
    }
    /**
     * <code>string owner_string = 2;</code>
     * @return The bytes for ownerString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOwnerStringBytes() {
      java.lang.Object ref = ownerString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ownerString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (ownerUuid_ != null) {
        output.writeMessage(1, getOwnerUuid());
      }
      if (!getOwnerStringBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (ownerUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getOwnerUuid());
      }
      if (!getOwnerStringBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.SliceOwner)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.SliceOwner other = (context.ContextOuterClass.SliceOwner) obj;

      if (hasOwnerUuid() != other.hasOwnerUuid()) return false;
      if (hasOwnerUuid()) {
        if (!getOwnerUuid()
            .equals(other.getOwnerUuid())) return false;
      }
      if (!getOwnerString()
          .equals(other.getOwnerString())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasOwnerUuid()) {
        hash = (37 * hash) + OWNER_UUID_FIELD_NUMBER;
        hash = (53 * hash) + getOwnerUuid().hashCode();
      }
      hash = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
      hash = (53 * hash) + getOwnerString().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.SliceOwner parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceOwner parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceOwner parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceOwner parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceOwner parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceOwner parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceOwner parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceOwner 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 context.ContextOuterClass.SliceOwner parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceOwner 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 context.ContextOuterClass.SliceOwner parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceOwner parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.SliceOwner prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.SliceOwner}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.SliceOwner)
        context.ContextOuterClass.SliceOwnerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
      }

      // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (ownerUuidBuilder_ == null) {
          ownerUuid_ = null;
        } else {
          ownerUuid_ = null;
          ownerUuidBuilder_ = null;
        }
        ownerString_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
        return context.ContextOuterClass.SliceOwner.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceOwner build() {
        context.ContextOuterClass.SliceOwner result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceOwner buildPartial() {
        context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
        if (ownerUuidBuilder_ == null) {
          result.ownerUuid_ = ownerUuid_;
        } else {
          result.ownerUuid_ = ownerUuidBuilder_.build();
        }
        result.ownerString_ = ownerString_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.SliceOwner) {
          return mergeFrom((context.ContextOuterClass.SliceOwner)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.SliceOwner other) {
        if (other == context.ContextOuterClass.SliceOwner.getDefaultInstance()) return this;
        if (other.hasOwnerUuid()) {
          mergeOwnerUuid(other.getOwnerUuid());
        }
        if (!other.getOwnerString().isEmpty()) {
          ownerString_ = other.ownerString_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.SliceOwner parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.SliceOwner) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Uuid ownerUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> ownerUuidBuilder_;
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       * @return Whether the ownerUuid field is set.
       */
      public boolean hasOwnerUuid() {
        return ownerUuidBuilder_ != null || ownerUuid_ != null;
      }
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       * @return The ownerUuid.
       */
      public context.ContextOuterClass.Uuid getOwnerUuid() {
        if (ownerUuidBuilder_ == null) {
          return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
        } else {
          return ownerUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       */
      public Builder setOwnerUuid(context.ContextOuterClass.Uuid value) {
        if (ownerUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ownerUuid_ = value;
          onChanged();
        } else {
          ownerUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       */
      public Builder setOwnerUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (ownerUuidBuilder_ == null) {
          ownerUuid_ = builderForValue.build();
          onChanged();
        } else {
          ownerUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       */
      public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
        if (ownerUuidBuilder_ == null) {
          if (ownerUuid_ != null) {
            ownerUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(ownerUuid_).mergeFrom(value).buildPartial();
          } else {
            ownerUuid_ = value;
          }
          onChanged();
        } else {
          ownerUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       */
      public Builder clearOwnerUuid() {
        if (ownerUuidBuilder_ == null) {
          ownerUuid_ = null;
          onChanged();
        } else {
          ownerUuid_ = null;
          ownerUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
        
        onChanged();
        return getOwnerUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
        if (ownerUuidBuilder_ != null) {
          return ownerUuidBuilder_.getMessageOrBuilder();
        } else {
          return ownerUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
        }
      }
      /**
       * <code>.context.Uuid owner_uuid = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getOwnerUuidFieldBuilder() {
        if (ownerUuidBuilder_ == null) {
          ownerUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getOwnerUuid(),
                  getParentForChildren(),
                  isClean());
          ownerUuid_ = null;
        }
        return ownerUuidBuilder_;
      }

      private java.lang.Object ownerString_ = "";
      /**
       * <code>string owner_string = 2;</code>
       * @return The ownerString.
       */
      public java.lang.String getOwnerString() {
        java.lang.Object ref = ownerString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ownerString_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string owner_string = 2;</code>
       * @return The bytes for ownerString.
       */
      public com.google.protobuf.ByteString
          getOwnerStringBytes() {
        java.lang.Object ref = ownerString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ownerString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string owner_string = 2;</code>
       * @param value The ownerString to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerString(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ownerString_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string owner_string = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOwnerString() {
        
        ownerString_ = getDefaultInstance().getOwnerString();
        onChanged();
        return this;
      }
      /**
       * <code>string owner_string = 2;</code>
       * @param value The bytes for ownerString to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ownerString_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.SliceOwner)
    }

    // @@protoc_insertion_point(class_scope:context.SliceOwner)
    private static final context.ContextOuterClass.SliceOwner DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceOwner();
    }

    public static context.ContextOuterClass.SliceOwner getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SliceStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.SliceStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.SliceStatusEnum slice_status = 1;</code>
     * @return The enum numeric value on the wire for sliceStatus.
     */
    int getSliceStatusValue();
    /**
     * <code>.context.SliceStatusEnum slice_status = 1;</code>
     * @return The sliceStatus.
     */
    context.ContextOuterClass.SliceStatusEnum getSliceStatus();
  }
  /**
   * Protobuf type {@code context.SliceStatus}
   */
  public static final class SliceStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.SliceStatus)
      SliceStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SliceStatus.newBuilder() to construct.
    private SliceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SliceStatus() {
      sliceStatus_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SliceStatus();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SliceStatus(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {
              int rawValue = input.readEnum();

              sliceStatus_ = rawValue;
              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 context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
    }

    public static final int SLICE_STATUS_FIELD_NUMBER = 1;
    private int sliceStatus_;
    /**
     * <code>.context.SliceStatusEnum slice_status = 1;</code>
     * @return The enum numeric value on the wire for sliceStatus.
     */
    @java.lang.Override public int getSliceStatusValue() {
      return sliceStatus_;
    }
    /**
     * <code>.context.SliceStatusEnum slice_status = 1;</code>
     * @return The sliceStatus.
     */
    @java.lang.Override public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
      @SuppressWarnings("deprecation")
      context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
      return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
        output.writeEnum(1, sliceStatus_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, sliceStatus_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.SliceStatus)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;

      if (sliceStatus_ != other.sliceStatus_) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.SliceStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceStatus parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceStatus 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 context.ContextOuterClass.SliceStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceStatus 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 context.ContextOuterClass.SliceStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.SliceStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.SliceStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.SliceStatus)
        context.ContextOuterClass.SliceStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
      }

      // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sliceStatus_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
        return context.ContextOuterClass.SliceStatus.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceStatus build() {
        context.ContextOuterClass.SliceStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceStatus buildPartial() {
        context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
        result.sliceStatus_ = sliceStatus_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.SliceStatus) {
          return mergeFrom((context.ContextOuterClass.SliceStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.SliceStatus other) {
        if (other == context.ContextOuterClass.SliceStatus.getDefaultInstance()) return this;
        if (other.sliceStatus_ != 0) {
          setSliceStatusValue(other.getSliceStatusValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.SliceStatus parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.SliceStatus) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int sliceStatus_ = 0;
      /**
       * <code>.context.SliceStatusEnum slice_status = 1;</code>
       * @return The enum numeric value on the wire for sliceStatus.
       */
      @java.lang.Override public int getSliceStatusValue() {
        return sliceStatus_;
      }
      /**
       * <code>.context.SliceStatusEnum slice_status = 1;</code>
       * @param value The enum numeric value on the wire for sliceStatus to set.
       * @return This builder for chaining.
       */
      public Builder setSliceStatusValue(int value) {
        
        sliceStatus_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.context.SliceStatusEnum slice_status = 1;</code>
       * @return The sliceStatus.
       */
      @java.lang.Override
      public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
        @SuppressWarnings("deprecation")
        context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
        return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
      }
      /**
       * <code>.context.SliceStatusEnum slice_status = 1;</code>
       * @param value The sliceStatus to set.
       * @return This builder for chaining.
       */
      public Builder setSliceStatus(context.ContextOuterClass.SliceStatusEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        sliceStatus_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.context.SliceStatusEnum slice_status = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSliceStatus() {
        
        sliceStatus_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.SliceStatus)
    }

    // @@protoc_insertion_point(class_scope:context.SliceStatus)
    private static final context.ContextOuterClass.SliceStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceStatus();
    }

    public static context.ContextOuterClass.SliceStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SliceConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.SliceConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    java.util.List<context.ContextOuterClass.ConfigRule> 
        getConfigRulesList();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    context.ContextOuterClass.ConfigRule getConfigRules(int index);
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    int getConfigRulesCount();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
        getConfigRulesOrBuilderList();
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.SliceConfig}
   */
  public static final class SliceConfig extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.SliceConfig)
      SliceConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SliceConfig.newBuilder() to construct.
    private SliceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SliceConfig() {
      configRules_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SliceConfig();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SliceConfig(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
                mutable_bitField0_ |= 0x00000001;
              }
              configRules_.add(
                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          configRules_ = java.util.Collections.unmodifiableList(configRules_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
    }

    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
      return configRules_;
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
        getConfigRulesOrBuilderList() {
      return configRules_;
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public int getConfigRulesCount() {
      return configRules_.size();
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
      return configRules_.get(index);
    }
    /**
     * <code>repeated .context.ConfigRule config_rules = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
        int index) {
      return configRules_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < configRules_.size(); i++) {
        output.writeMessage(1, configRules_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < configRules_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, configRules_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.SliceConfig)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;

      if (!getConfigRulesList()
          .equals(other.getConfigRulesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.SliceConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceConfig parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceConfig parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceConfig 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 context.ContextOuterClass.SliceConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceConfig 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 context.ContextOuterClass.SliceConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceConfig parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.SliceConfig prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.SliceConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.SliceConfig)
        context.ContextOuterClass.SliceConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
      }

      // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getConfigRulesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (configRulesBuilder_ == null) {
          configRules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          configRulesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
        return context.ContextOuterClass.SliceConfig.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceConfig build() {
        context.ContextOuterClass.SliceConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceConfig buildPartial() {
        context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
        int from_bitField0_ = bitField0_;
        if (configRulesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            configRules_ = java.util.Collections.unmodifiableList(configRules_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.configRules_ = configRules_;
        } else {
          result.configRules_ = configRulesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.SliceConfig) {
          return mergeFrom((context.ContextOuterClass.SliceConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.SliceConfig other) {
        if (other == context.ContextOuterClass.SliceConfig.getDefaultInstance()) return this;
        if (configRulesBuilder_ == null) {
          if (!other.configRules_.isEmpty()) {
            if (configRules_.isEmpty()) {
              configRules_ = other.configRules_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConfigRulesIsMutable();
              configRules_.addAll(other.configRules_);
            }
            onChanged();
          }
        } else {
          if (!other.configRules_.isEmpty()) {
            if (configRulesBuilder_.isEmpty()) {
              configRulesBuilder_.dispose();
              configRulesBuilder_ = null;
              configRules_ = other.configRules_;
              bitField0_ = (bitField0_ & ~0x00000001);
              configRulesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConfigRulesFieldBuilder() : null;
            } else {
              configRulesBuilder_.addAllMessages(other.configRules_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.SliceConfig parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.SliceConfig) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ =
        java.util.Collections.emptyList();
      private void ensureConfigRulesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;

      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
        if (configRulesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(configRules_);
        } else {
          return configRulesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public int getConfigRulesCount() {
        if (configRulesBuilder_ == null) {
          return configRules_.size();
        } else {
          return configRulesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
        if (configRulesBuilder_ == null) {
          return configRules_.get(index);
        } else {
          return configRulesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder setConfigRules(
          int index, context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.set(index, value);
          onChanged();
        } else {
          configRulesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder setConfigRules(
          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.set(index, builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.add(value);
          onChanged();
        } else {
          configRulesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          int index, context.ContextOuterClass.ConfigRule value) {
        if (configRulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigRulesIsMutable();
          configRules_.add(index, value);
          onChanged();
        } else {
          configRulesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.add(builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addConfigRules(
          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.add(index, builderForValue.build());
          onChanged();
        } else {
          configRulesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder addAllConfigRules(
          java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, configRules_);
          onChanged();
        } else {
          configRulesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder clearConfigRules() {
        if (configRulesBuilder_ == null) {
          configRules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          configRulesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public Builder removeConfigRules(int index) {
        if (configRulesBuilder_ == null) {
          ensureConfigRulesIsMutable();
          configRules_.remove(index);
          onChanged();
        } else {
          configRulesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
          int index) {
        return getConfigRulesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
          int index) {
        if (configRulesBuilder_ == null) {
          return configRules_.get(index);  } else {
          return configRulesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
           getConfigRulesOrBuilderList() {
        if (configRulesBuilder_ != null) {
          return configRulesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(configRules_);
        }
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
        return getConfigRulesFieldBuilder().addBuilder(
            context.ContextOuterClass.ConfigRule.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
          int index) {
        return getConfigRulesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ConfigRule config_rules = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ConfigRule.Builder> 
           getConfigRulesBuilderList() {
        return getConfigRulesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> 
          getConfigRulesFieldBuilder() {
        if (configRulesBuilder_ == null) {
          configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(
                  configRules_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          configRules_ = null;
        }
        return configRulesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.SliceConfig)
    }

    // @@protoc_insertion_point(class_scope:context.SliceConfig)
    private static final context.ContextOuterClass.SliceConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceConfig();
    }

    public static context.ContextOuterClass.SliceConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SliceIdListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.SliceIdList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    java.util.List<context.ContextOuterClass.SliceId> 
        getSliceIdsList();
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    context.ContextOuterClass.SliceId getSliceIds(int index);
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    int getSliceIdsCount();
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
        getSliceIdsOrBuilderList();
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.SliceIdList}
   */
  public static final class SliceIdList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.SliceIdList)
      SliceIdListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SliceIdList.newBuilder() to construct.
    private SliceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SliceIdList() {
      sliceIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SliceIdList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SliceIdList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
                mutable_bitField0_ |= 0x00000001;
              }
              sliceIds_.add(
                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
    }

    public static final int SLICE_IDS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
      return sliceIds_;
    }
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
        getSliceIdsOrBuilderList() {
      return sliceIds_;
    }
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    @java.lang.Override
    public int getSliceIdsCount() {
      return sliceIds_.size();
    }
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceId getSliceIds(int index) {
      return sliceIds_.get(index);
    }
    /**
     * <code>repeated .context.SliceId slice_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
        int index) {
      return sliceIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < sliceIds_.size(); i++) {
        output.writeMessage(1, sliceIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < sliceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, sliceIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.SliceIdList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;

      if (!getSliceIdsList()
          .equals(other.getSliceIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.SliceIdList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceIdList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceIdList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceIdList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceIdList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceIdList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceIdList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceIdList 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 context.ContextOuterClass.SliceIdList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceIdList 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 context.ContextOuterClass.SliceIdList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceIdList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.SliceIdList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.SliceIdList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.SliceIdList)
        context.ContextOuterClass.SliceIdListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
      }

      // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSliceIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (sliceIdsBuilder_ == null) {
          sliceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          sliceIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
        return context.ContextOuterClass.SliceIdList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceIdList build() {
        context.ContextOuterClass.SliceIdList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceIdList buildPartial() {
        context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
        int from_bitField0_ = bitField0_;
        if (sliceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sliceIds_ = sliceIds_;
        } else {
          result.sliceIds_ = sliceIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.SliceIdList) {
          return mergeFrom((context.ContextOuterClass.SliceIdList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.SliceIdList other) {
        if (other == context.ContextOuterClass.SliceIdList.getDefaultInstance()) return this;
        if (sliceIdsBuilder_ == null) {
          if (!other.sliceIds_.isEmpty()) {
            if (sliceIds_.isEmpty()) {
              sliceIds_ = other.sliceIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSliceIdsIsMutable();
              sliceIds_.addAll(other.sliceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.sliceIds_.isEmpty()) {
            if (sliceIdsBuilder_.isEmpty()) {
              sliceIdsBuilder_.dispose();
              sliceIdsBuilder_ = null;
              sliceIds_ = other.sliceIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              sliceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSliceIdsFieldBuilder() : null;
            } else {
              sliceIdsBuilder_.addAllMessages(other.sliceIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.SliceIdList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.SliceIdList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ =
        java.util.Collections.emptyList();
      private void ensureSliceIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;

      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
        if (sliceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sliceIds_);
        } else {
          return sliceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public int getSliceIdsCount() {
        if (sliceIdsBuilder_ == null) {
          return sliceIds_.size();
        } else {
          return sliceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public context.ContextOuterClass.SliceId getSliceIds(int index) {
        if (sliceIdsBuilder_ == null) {
          return sliceIds_.get(index);
        } else {
          return sliceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder setSliceIds(
          int index, context.ContextOuterClass.SliceId value) {
        if (sliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceIdsIsMutable();
          sliceIds_.set(index, value);
          onChanged();
        } else {
          sliceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder setSliceIds(
          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          sliceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          sliceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
        if (sliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceIdsIsMutable();
          sliceIds_.add(value);
          onChanged();
        } else {
          sliceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder addSliceIds(
          int index, context.ContextOuterClass.SliceId value) {
        if (sliceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSliceIdsIsMutable();
          sliceIds_.add(index, value);
          onChanged();
        } else {
          sliceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder addSliceIds(
          context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          sliceIds_.add(builderForValue.build());
          onChanged();
        } else {
          sliceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder addSliceIds(
          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          sliceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          sliceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder addAllSliceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sliceIds_);
          onChanged();
        } else {
          sliceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder clearSliceIds() {
        if (sliceIdsBuilder_ == null) {
          sliceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          sliceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public Builder removeSliceIds(int index) {
        if (sliceIdsBuilder_ == null) {
          ensureSliceIdsIsMutable();
          sliceIds_.remove(index);
          onChanged();
        } else {
          sliceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(
          int index) {
        return getSliceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
          int index) {
        if (sliceIdsBuilder_ == null) {
          return sliceIds_.get(index);  } else {
          return sliceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
           getSliceIdsOrBuilderList() {
        if (sliceIdsBuilder_ != null) {
          return sliceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sliceIds_);
        }
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
        return getSliceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.SliceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(
          int index) {
        return getSliceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.SliceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.SliceId slice_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.SliceId.Builder> 
           getSliceIdsBuilderList() {
        return getSliceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
          getSliceIdsFieldBuilder() {
        if (sliceIdsBuilder_ == null) {
          sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
                  sliceIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sliceIds_ = null;
        }
        return sliceIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.SliceIdList)
    }

    // @@protoc_insertion_point(class_scope:context.SliceIdList)
    private static final context.ContextOuterClass.SliceIdList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceIdList();
    }

    public static context.ContextOuterClass.SliceIdList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SliceListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.SliceList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    java.util.List<context.ContextOuterClass.Slice> 
        getSlicesList();
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    context.ContextOuterClass.Slice getSlices(int index);
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    int getSlicesCount();
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
        getSlicesOrBuilderList();
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.SliceList}
   */
  public static final class SliceList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.SliceList)
      SliceListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SliceList.newBuilder() to construct.
    private SliceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SliceList() {
      slices_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SliceList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SliceList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>();
                mutable_bitField0_ |= 0x00000001;
              }
              slices_.add(
                  input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          slices_ = java.util.Collections.unmodifiableList(slices_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
    }

    public static final int SLICES_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.Slice> slices_;
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
      return slices_;
    }
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
        getSlicesOrBuilderList() {
      return slices_;
    }
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    @java.lang.Override
    public int getSlicesCount() {
      return slices_.size();
    }
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Slice getSlices(int index) {
      return slices_.get(index);
    }
    /**
     * <code>repeated .context.Slice slices = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(
        int index) {
      return slices_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < slices_.size(); i++) {
        output.writeMessage(1, slices_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < slices_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, slices_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.SliceList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;

      if (!getSlicesList()
          .equals(other.getSlicesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.SliceList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceList 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 context.ContextOuterClass.SliceList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceList 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 context.ContextOuterClass.SliceList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.SliceList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.SliceList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.SliceList)
        context.ContextOuterClass.SliceListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
      }

      // Construct using context.ContextOuterClass.SliceList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSlicesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (slicesBuilder_ == null) {
          slices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          slicesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
        return context.ContextOuterClass.SliceList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceList build() {
        context.ContextOuterClass.SliceList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceList buildPartial() {
        context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
        int from_bitField0_ = bitField0_;
        if (slicesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            slices_ = java.util.Collections.unmodifiableList(slices_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.slices_ = slices_;
        } else {
          result.slices_ = slicesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.SliceList) {
          return mergeFrom((context.ContextOuterClass.SliceList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.SliceList other) {
        if (other == context.ContextOuterClass.SliceList.getDefaultInstance()) return this;
        if (slicesBuilder_ == null) {
          if (!other.slices_.isEmpty()) {
            if (slices_.isEmpty()) {
              slices_ = other.slices_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSlicesIsMutable();
              slices_.addAll(other.slices_);
            }
            onChanged();
          }
        } else {
          if (!other.slices_.isEmpty()) {
            if (slicesBuilder_.isEmpty()) {
              slicesBuilder_.dispose();
              slicesBuilder_ = null;
              slices_ = other.slices_;
              bitField0_ = (bitField0_ & ~0x00000001);
              slicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSlicesFieldBuilder() : null;
            } else {
              slicesBuilder_.addAllMessages(other.slices_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.SliceList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.SliceList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.Slice> slices_ =
        java.util.Collections.emptyList();
      private void ensureSlicesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>(slices_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder> slicesBuilder_;

      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
        if (slicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(slices_);
        } else {
          return slicesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public int getSlicesCount() {
        if (slicesBuilder_ == null) {
          return slices_.size();
        } else {
          return slicesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public context.ContextOuterClass.Slice getSlices(int index) {
        if (slicesBuilder_ == null) {
          return slices_.get(index);
        } else {
          return slicesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder setSlices(
          int index, context.ContextOuterClass.Slice value) {
        if (slicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlicesIsMutable();
          slices_.set(index, value);
          onChanged();
        } else {
          slicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder setSlices(
          int index, context.ContextOuterClass.Slice.Builder builderForValue) {
        if (slicesBuilder_ == null) {
          ensureSlicesIsMutable();
          slices_.set(index, builderForValue.build());
          onChanged();
        } else {
          slicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder addSlices(context.ContextOuterClass.Slice value) {
        if (slicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlicesIsMutable();
          slices_.add(value);
          onChanged();
        } else {
          slicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder addSlices(
          int index, context.ContextOuterClass.Slice value) {
        if (slicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlicesIsMutable();
          slices_.add(index, value);
          onChanged();
        } else {
          slicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder addSlices(
          context.ContextOuterClass.Slice.Builder builderForValue) {
        if (slicesBuilder_ == null) {
          ensureSlicesIsMutable();
          slices_.add(builderForValue.build());
          onChanged();
        } else {
          slicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder addSlices(
          int index, context.ContextOuterClass.Slice.Builder builderForValue) {
        if (slicesBuilder_ == null) {
          ensureSlicesIsMutable();
          slices_.add(index, builderForValue.build());
          onChanged();
        } else {
          slicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder addAllSlices(
          java.lang.Iterable<? extends context.ContextOuterClass.Slice> values) {
        if (slicesBuilder_ == null) {
          ensureSlicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, slices_);
          onChanged();
        } else {
          slicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder clearSlices() {
        if (slicesBuilder_ == null) {
          slices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          slicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public Builder removeSlices(int index) {
        if (slicesBuilder_ == null) {
          ensureSlicesIsMutable();
          slices_.remove(index);
          onChanged();
        } else {
          slicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public context.ContextOuterClass.Slice.Builder getSlicesBuilder(
          int index) {
        return getSlicesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(
          int index) {
        if (slicesBuilder_ == null) {
          return slices_.get(index);  } else {
          return slicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
           getSlicesOrBuilderList() {
        if (slicesBuilder_ != null) {
          return slicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(slices_);
        }
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public context.ContextOuterClass.Slice.Builder addSlicesBuilder() {
        return getSlicesFieldBuilder().addBuilder(
            context.ContextOuterClass.Slice.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public context.ContextOuterClass.Slice.Builder addSlicesBuilder(
          int index) {
        return getSlicesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Slice.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Slice slices = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Slice.Builder> 
           getSlicesBuilderList() {
        return getSlicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder> 
          getSlicesFieldBuilder() {
        if (slicesBuilder_ == null) {
          slicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder>(
                  slices_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          slices_ = null;
        }
        return slicesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.SliceList)
    }

    // @@protoc_insertion_point(class_scope:context.SliceList)
    private static final context.ContextOuterClass.SliceList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceList();
    }

    public static context.ContextOuterClass.SliceList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SliceEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.SliceEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    boolean hasEvent();
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    context.ContextOuterClass.Event getEvent();
    /**
     * <code>.context.Event event = 1;</code>
     */
    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

    /**
     * <code>.context.SliceId slice_id = 2;</code>
     * @return Whether the sliceId field is set.
     */
    boolean hasSliceId();
    /**
     * <code>.context.SliceId slice_id = 2;</code>
     * @return The sliceId.
     */
    context.ContextOuterClass.SliceId getSliceId();
    /**
     * <code>.context.SliceId slice_id = 2;</code>
     */
    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
  }
  /**
   * Protobuf type {@code context.SliceEvent}
   */
  public static final class SliceEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.SliceEvent)
      SliceEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SliceEvent.newBuilder() to construct.
    private SliceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SliceEvent() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SliceEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SliceEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Event.Builder subBuilder = null;
              if (event_ != null) {
                subBuilder = event_.toBuilder();
              }
              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(event_);
                event_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.SliceId.Builder subBuilder = null;
              if (sliceId_ != null) {
                subBuilder = sliceId_.toBuilder();
              }
              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sliceId_);
                sliceId_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
    }

    public static final int EVENT_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Event event_;
    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    @java.lang.Override
    public boolean hasEvent() {
      return event_ != null;
    }
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    @java.lang.Override
    public context.ContextOuterClass.Event getEvent() {
      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
    }
    /**
     * <code>.context.Event event = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
      return getEvent();
    }

    public static final int SLICE_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.SliceId sliceId_;
    /**
     * <code>.context.SliceId slice_id = 2;</code>
     * @return Whether the sliceId field is set.
     */
    @java.lang.Override
    public boolean hasSliceId() {
      return sliceId_ != null;
    }
    /**
     * <code>.context.SliceId slice_id = 2;</code>
     * @return The sliceId.
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceId getSliceId() {
      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
    }
    /**
     * <code>.context.SliceId slice_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
      return getSliceId();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (event_ != null) {
        output.writeMessage(1, getEvent());
      }
      if (sliceId_ != null) {
        output.writeMessage(2, getSliceId());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (event_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEvent());
      }
      if (sliceId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSliceId());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.SliceEvent)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.SliceEvent other = (context.ContextOuterClass.SliceEvent) obj;

      if (hasEvent() != other.hasEvent()) return false;
      if (hasEvent()) {
        if (!getEvent()
            .equals(other.getEvent())) return false;
      }
      if (hasSliceId() != other.hasSliceId()) return false;
      if (hasSliceId()) {
        if (!getSliceId()
            .equals(other.getSliceId())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEvent()) {
        hash = (37 * hash) + EVENT_FIELD_NUMBER;
        hash = (53 * hash) + getEvent().hashCode();
      }
      if (hasSliceId()) {
        hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getSliceId().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.SliceEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.SliceEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.SliceEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceEvent 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 context.ContextOuterClass.SliceEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceEvent 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 context.ContextOuterClass.SliceEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.SliceEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.SliceEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.SliceEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.SliceEvent)
        context.ContextOuterClass.SliceEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
      }

      // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (eventBuilder_ == null) {
          event_ = null;
        } else {
          event_ = null;
          eventBuilder_ = null;
        }
        if (sliceIdBuilder_ == null) {
          sliceId_ = null;
        } else {
          sliceId_ = null;
          sliceIdBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
        return context.ContextOuterClass.SliceEvent.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceEvent build() {
        context.ContextOuterClass.SliceEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.SliceEvent buildPartial() {
        context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
        if (eventBuilder_ == null) {
          result.event_ = event_;
        } else {
          result.event_ = eventBuilder_.build();
        }
        if (sliceIdBuilder_ == null) {
          result.sliceId_ = sliceId_;
        } else {
          result.sliceId_ = sliceIdBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.SliceEvent) {
          return mergeFrom((context.ContextOuterClass.SliceEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.SliceEvent other) {
        if (other == context.ContextOuterClass.SliceEvent.getDefaultInstance()) return this;
        if (other.hasEvent()) {
          mergeEvent(other.getEvent());
        }
        if (other.hasSliceId()) {
          mergeSliceId(other.getSliceId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.SliceEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.SliceEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Event event_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
      /**
       * <code>.context.Event event = 1;</code>
       * @return Whether the event field is set.
       */
      public boolean hasEvent() {
        return eventBuilder_ != null || event_ != null;
      }
      /**
       * <code>.context.Event event = 1;</code>
       * @return The event.
       */
      public context.ContextOuterClass.Event getEvent() {
        if (eventBuilder_ == null) {
          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        } else {
          return eventBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          eventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(
          context.ContextOuterClass.Event.Builder builderForValue) {
        if (eventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          eventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder mergeEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (event_ != null) {
            event_ =
              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          eventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder clearEvent() {
        if (eventBuilder_ == null) {
          event_ = null;
          onChanged();
        } else {
          event_ = null;
          eventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.Event.Builder getEventBuilder() {
        
        onChanged();
        return getEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
        if (eventBuilder_ != null) {
          return eventBuilder_.getMessageOrBuilder();
        } else {
          return event_ == null ?
              context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
          getEventFieldBuilder() {
        if (eventBuilder_ == null) {
          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
                  getEvent(),
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        return eventBuilder_;
      }

      private context.ContextOuterClass.SliceId sliceId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       * @return Whether the sliceId field is set.
       */
      public boolean hasSliceId() {
        return sliceIdBuilder_ != null || sliceId_ != null;
      }
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       * @return The sliceId.
       */
      public context.ContextOuterClass.SliceId getSliceId() {
        if (sliceIdBuilder_ == null) {
          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
        } else {
          return sliceIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       */
      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
        if (sliceIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sliceId_ = value;
          onChanged();
        } else {
          sliceIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       */
      public Builder setSliceId(
          context.ContextOuterClass.SliceId.Builder builderForValue) {
        if (sliceIdBuilder_ == null) {
          sliceId_ = builderForValue.build();
          onChanged();
        } else {
          sliceIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       */
      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
        if (sliceIdBuilder_ == null) {
          if (sliceId_ != null) {
            sliceId_ =
              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
          } else {
            sliceId_ = value;
          }
          onChanged();
        } else {
          sliceIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       */
      public Builder clearSliceId() {
        if (sliceIdBuilder_ == null) {
          sliceId_ = null;
          onChanged();
        } else {
          sliceId_ = null;
          sliceIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       */
      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
        
        onChanged();
        return getSliceIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       */
      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
        if (sliceIdBuilder_ != null) {
          return sliceIdBuilder_.getMessageOrBuilder();
        } else {
          return sliceId_ == null ?
              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
        }
      }
      /**
       * <code>.context.SliceId slice_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
          getSliceIdFieldBuilder() {
        if (sliceIdBuilder_ == null) {
          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
                  getSliceId(),
                  getParentForChildren(),
                  isClean());
          sliceId_ = null;
        }
        return sliceIdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.SliceEvent)
    }

    // @@protoc_insertion_point(class_scope:context.SliceEvent)
    private static final context.ContextOuterClass.SliceEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceEvent();
    }

    public static context.ContextOuterClass.SliceEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Uuid connection_uuid = 1;</code>
     * @return Whether the connectionUuid field is set.
     */
    boolean hasConnectionUuid();
    /**
     * <code>.context.Uuid connection_uuid = 1;</code>
     * @return The connectionUuid.
     */
    context.ContextOuterClass.Uuid getConnectionUuid();
    /**
     * <code>.context.Uuid connection_uuid = 1;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder();
  }
  /**
   * <pre>
   * ----- Connection ----------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.ConnectionId}
   */
  public static final class ConnectionId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionId)
      ConnectionIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionId.newBuilder() to construct.
    private ConnectionId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionId();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (connectionUuid_ != null) {
                subBuilder = connectionUuid_.toBuilder();
              }
              connectionUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(connectionUuid_);
                connectionUuid_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
    }

    public static final int CONNECTION_UUID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Uuid connectionUuid_;
    /**
     * <code>.context.Uuid connection_uuid = 1;</code>
     * @return Whether the connectionUuid field is set.
     */
    @java.lang.Override
    public boolean hasConnectionUuid() {
      return connectionUuid_ != null;
    }
    /**
     * <code>.context.Uuid connection_uuid = 1;</code>
     * @return The connectionUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getConnectionUuid() {
      return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
    }
    /**
     * <code>.context.Uuid connection_uuid = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
      return getConnectionUuid();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (connectionUuid_ != null) {
        output.writeMessage(1, getConnectionUuid());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (connectionUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getConnectionUuid());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionId)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionId other = (context.ContextOuterClass.ConnectionId) obj;

      if (hasConnectionUuid() != other.hasConnectionUuid()) return false;
      if (hasConnectionUuid()) {
        if (!getConnectionUuid()
            .equals(other.getConnectionUuid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ConnectionId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionId 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 context.ContextOuterClass.ConnectionId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionId 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 context.ContextOuterClass.ConnectionId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Connection ----------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.ConnectionId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionId)
        context.ContextOuterClass.ConnectionIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (connectionUuidBuilder_ == null) {
          connectionUuid_ = null;
        } else {
          connectionUuid_ = null;
          connectionUuidBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionId.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionId build() {
        context.ContextOuterClass.ConnectionId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionId buildPartial() {
        context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
        if (connectionUuidBuilder_ == null) {
          result.connectionUuid_ = connectionUuid_;
        } else {
          result.connectionUuid_ = connectionUuidBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionId) {
          return mergeFrom((context.ContextOuterClass.ConnectionId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionId other) {
        if (other == context.ContextOuterClass.ConnectionId.getDefaultInstance()) return this;
        if (other.hasConnectionUuid()) {
          mergeConnectionUuid(other.getConnectionUuid());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Uuid connectionUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> connectionUuidBuilder_;
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       * @return Whether the connectionUuid field is set.
       */
      public boolean hasConnectionUuid() {
        return connectionUuidBuilder_ != null || connectionUuid_ != null;
      }
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       * @return The connectionUuid.
       */
      public context.ContextOuterClass.Uuid getConnectionUuid() {
        if (connectionUuidBuilder_ == null) {
          return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
        } else {
          return connectionUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       */
      public Builder setConnectionUuid(context.ContextOuterClass.Uuid value) {
        if (connectionUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectionUuid_ = value;
          onChanged();
        } else {
          connectionUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       */
      public Builder setConnectionUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (connectionUuidBuilder_ == null) {
          connectionUuid_ = builderForValue.build();
          onChanged();
        } else {
          connectionUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       */
      public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
        if (connectionUuidBuilder_ == null) {
          if (connectionUuid_ != null) {
            connectionUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(connectionUuid_).mergeFrom(value).buildPartial();
          } else {
            connectionUuid_ = value;
          }
          onChanged();
        } else {
          connectionUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       */
      public Builder clearConnectionUuid() {
        if (connectionUuidBuilder_ == null) {
          connectionUuid_ = null;
          onChanged();
        } else {
          connectionUuid_ = null;
          connectionUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
        
        onChanged();
        return getConnectionUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
        if (connectionUuidBuilder_ != null) {
          return connectionUuidBuilder_.getMessageOrBuilder();
        } else {
          return connectionUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
        }
      }
      /**
       * <code>.context.Uuid connection_uuid = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getConnectionUuidFieldBuilder() {
        if (connectionUuidBuilder_ == null) {
          connectionUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getConnectionUuid(),
                  getParentForChildren(),
                  isClean());
          connectionUuid_ = null;
        }
        return connectionUuidBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionId)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionId)
    private static final context.ContextOuterClass.ConnectionId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionId();
    }

    public static context.ContextOuterClass.ConnectionId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionSettings_L0OrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L0)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string lsp_symbolic_name = 1;</code>
     * @return The lspSymbolicName.
     */
    java.lang.String getLspSymbolicName();
    /**
     * <code>string lsp_symbolic_name = 1;</code>
     * @return The bytes for lspSymbolicName.
     */
    com.google.protobuf.ByteString
        getLspSymbolicNameBytes();
  }
  /**
   * Protobuf type {@code context.ConnectionSettings_L0}
   */
  public static final class ConnectionSettings_L0 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L0)
      ConnectionSettings_L0OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionSettings_L0.newBuilder() to construct.
    private ConnectionSettings_L0(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionSettings_L0() {
      lspSymbolicName_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionSettings_L0();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionSettings_L0(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              lspSymbolicName_ = s;
              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 context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
    }

    public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object lspSymbolicName_;
    /**
     * <code>string lsp_symbolic_name = 1;</code>
     * @return The lspSymbolicName.
     */
    @java.lang.Override
    public java.lang.String getLspSymbolicName() {
      java.lang.Object ref = lspSymbolicName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        lspSymbolicName_ = s;
        return s;
      }
    }
    /**
     * <code>string lsp_symbolic_name = 1;</code>
     * @return The bytes for lspSymbolicName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLspSymbolicNameBytes() {
      java.lang.Object ref = lspSymbolicName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lspSymbolicName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getLspSymbolicNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getLspSymbolicNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L0)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;

      if (!getLspSymbolicName()
          .equals(other.getLspSymbolicName())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 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 context.ContextOuterClass.ConnectionSettings_L0 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 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 context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L0 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConnectionSettings_L0}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L0)
        context.ContextOuterClass.ConnectionSettings_L0OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        lspSymbolicName_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L0 build() {
        context.ContextOuterClass.ConnectionSettings_L0 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
        context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
        result.lspSymbolicName_ = lspSymbolicName_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionSettings_L0) {
          return mergeFrom((context.ContextOuterClass.ConnectionSettings_L0)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L0 other) {
        if (other == context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) return this;
        if (!other.getLspSymbolicName().isEmpty()) {
          lspSymbolicName_ = other.lspSymbolicName_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionSettings_L0 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L0) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object lspSymbolicName_ = "";
      /**
       * <code>string lsp_symbolic_name = 1;</code>
       * @return The lspSymbolicName.
       */
      public java.lang.String getLspSymbolicName() {
        java.lang.Object ref = lspSymbolicName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          lspSymbolicName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string lsp_symbolic_name = 1;</code>
       * @return The bytes for lspSymbolicName.
       */
      public com.google.protobuf.ByteString
          getLspSymbolicNameBytes() {
        java.lang.Object ref = lspSymbolicName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lspSymbolicName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string lsp_symbolic_name = 1;</code>
       * @param value The lspSymbolicName to set.
       * @return This builder for chaining.
       */
      public Builder setLspSymbolicName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        lspSymbolicName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string lsp_symbolic_name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLspSymbolicName() {
        
        lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
        onChanged();
        return this;
      }
      /**
       * <code>string lsp_symbolic_name = 1;</code>
       * @param value The bytes for lspSymbolicName to set.
       * @return This builder for chaining.
       */
      public Builder setLspSymbolicNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        lspSymbolicName_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L0)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L0)
    private static final context.ContextOuterClass.ConnectionSettings_L0 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L0();
    }

    public static context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionSettings_L2OrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L2)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string src_mac_address = 1;</code>
     * @return The srcMacAddress.
     */
    java.lang.String getSrcMacAddress();
    /**
     * <code>string src_mac_address = 1;</code>
     * @return The bytes for srcMacAddress.
     */
    com.google.protobuf.ByteString
        getSrcMacAddressBytes();

    /**
     * <code>string dst_mac_address = 2;</code>
     * @return The dstMacAddress.
     */
    java.lang.String getDstMacAddress();
    /**
     * <code>string dst_mac_address = 2;</code>
     * @return The bytes for dstMacAddress.
     */
    com.google.protobuf.ByteString
        getDstMacAddressBytes();

    /**
     * <code>uint32 ether_type = 3;</code>
     * @return The etherType.
     */
    int getEtherType();

    /**
     * <code>uint32 vlan_id = 4;</code>
     * @return The vlanId.
     */
    int getVlanId();

    /**
     * <code>uint32 mpls_label = 5;</code>
     * @return The mplsLabel.
     */
    int getMplsLabel();

    /**
     * <code>uint32 mpls_traffic_class = 6;</code>
     * @return The mplsTrafficClass.
     */
    int getMplsTrafficClass();
  }
  /**
   * Protobuf type {@code context.ConnectionSettings_L2}
   */
  public static final class ConnectionSettings_L2 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L2)
      ConnectionSettings_L2OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionSettings_L2.newBuilder() to construct.
    private ConnectionSettings_L2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionSettings_L2() {
      srcMacAddress_ = "";
      dstMacAddress_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionSettings_L2();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionSettings_L2(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              dstMacAddress_ = s;
              break;
            }
            case 24: {

              etherType_ = input.readUInt32();
              break;
            }
            case 32: {

              vlanId_ = input.readUInt32();
              break;
            }
            case 40: {

              mplsLabel_ = input.readUInt32();
              break;
            }
            case 48: {

              mplsTrafficClass_ = input.readUInt32();
              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 context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
    }

    public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
    private volatile java.lang.Object srcMacAddress_;
    /**
     * <code>string src_mac_address = 1;</code>
     * @return The srcMacAddress.
     */
    @java.lang.Override
    public java.lang.String getSrcMacAddress() {
      java.lang.Object ref = srcMacAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        srcMacAddress_ = s;
        return s;
      }
    }
    /**
     * <code>string src_mac_address = 1;</code>
     * @return The bytes for srcMacAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSrcMacAddressBytes() {
      java.lang.Object ref = srcMacAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        srcMacAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
    private volatile java.lang.Object dstMacAddress_;
    /**
     * <code>string dst_mac_address = 2;</code>
     * @return The dstMacAddress.
     */
    @java.lang.Override
    public java.lang.String getDstMacAddress() {
      java.lang.Object ref = dstMacAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        dstMacAddress_ = s;
        return s;
      }
    }
    /**
     * <code>string dst_mac_address = 2;</code>
     * @return The bytes for dstMacAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDstMacAddressBytes() {
      java.lang.Object ref = dstMacAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dstMacAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ETHER_TYPE_FIELD_NUMBER = 3;
    private int etherType_;
    /**
     * <code>uint32 ether_type = 3;</code>
     * @return The etherType.
     */
    @java.lang.Override
    public int getEtherType() {
      return etherType_;
    }

    public static final int VLAN_ID_FIELD_NUMBER = 4;
    private int vlanId_;
    /**
     * <code>uint32 vlan_id = 4;</code>
     * @return The vlanId.
     */
    @java.lang.Override
    public int getVlanId() {
      return vlanId_;
    }

    public static final int MPLS_LABEL_FIELD_NUMBER = 5;
    private int mplsLabel_;
    /**
     * <code>uint32 mpls_label = 5;</code>
     * @return The mplsLabel.
     */
    @java.lang.Override
    public int getMplsLabel() {
      return mplsLabel_;
    }

    public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
    private int mplsTrafficClass_;
    /**
     * <code>uint32 mpls_traffic_class = 6;</code>
     * @return The mplsTrafficClass.
     */
    @java.lang.Override
    public int getMplsTrafficClass() {
      return mplsTrafficClass_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getSrcMacAddressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
      }
      if (!getDstMacAddressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
      }
      if (etherType_ != 0) {
        output.writeUInt32(3, etherType_);
      }
      if (vlanId_ != 0) {
        output.writeUInt32(4, vlanId_);
      }
      if (mplsLabel_ != 0) {
        output.writeUInt32(5, mplsLabel_);
      }
      if (mplsTrafficClass_ != 0) {
        output.writeUInt32(6, mplsTrafficClass_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getSrcMacAddressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
      }
      if (!getDstMacAddressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
      }
      if (etherType_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, etherType_);
      }
      if (vlanId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, vlanId_);
      }
      if (mplsLabel_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, mplsLabel_);
      }
      if (mplsTrafficClass_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, mplsTrafficClass_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L2)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionSettings_L2 other = (context.ContextOuterClass.ConnectionSettings_L2) obj;

      if (!getSrcMacAddress()
          .equals(other.getSrcMacAddress())) return false;
      if (!getDstMacAddress()
          .equals(other.getDstMacAddress())) return false;
      if (getEtherType()
          != other.getEtherType()) return false;
      if (getVlanId()
          != other.getVlanId()) return false;
      if (getMplsLabel()
          != other.getMplsLabel()) return false;
      if (getMplsTrafficClass()
          != other.getMplsTrafficClass()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SRC_MAC_ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getSrcMacAddress().hashCode();
      hash = (37 * hash) + DST_MAC_ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getDstMacAddress().hashCode();
      hash = (37 * hash) + ETHER_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getEtherType();
      hash = (37 * hash) + VLAN_ID_FIELD_NUMBER;
      hash = (53 * hash) + getVlanId();
      hash = (37 * hash) + MPLS_LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getMplsLabel();
      hash = (37 * hash) + MPLS_TRAFFIC_CLASS_FIELD_NUMBER;
      hash = (53 * hash) + getMplsTrafficClass();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 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 context.ContextOuterClass.ConnectionSettings_L2 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 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 context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L2 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConnectionSettings_L2}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L2)
        context.ContextOuterClass.ConnectionSettings_L2OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        srcMacAddress_ = "";

        dstMacAddress_ = "";

        etherType_ = 0;

        vlanId_ = 0;

        mplsLabel_ = 0;

        mplsTrafficClass_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L2 build() {
        context.ContextOuterClass.ConnectionSettings_L2 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
        context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
        result.srcMacAddress_ = srcMacAddress_;
        result.dstMacAddress_ = dstMacAddress_;
        result.etherType_ = etherType_;
        result.vlanId_ = vlanId_;
        result.mplsLabel_ = mplsLabel_;
        result.mplsTrafficClass_ = mplsTrafficClass_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionSettings_L2) {
          return mergeFrom((context.ContextOuterClass.ConnectionSettings_L2)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L2 other) {
        if (other == context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) return this;
        if (!other.getSrcMacAddress().isEmpty()) {
          srcMacAddress_ = other.srcMacAddress_;
          onChanged();
        }
        if (!other.getDstMacAddress().isEmpty()) {
          dstMacAddress_ = other.dstMacAddress_;
          onChanged();
        }
        if (other.getEtherType() != 0) {
          setEtherType(other.getEtherType());
        }
        if (other.getVlanId() != 0) {
          setVlanId(other.getVlanId());
        }
        if (other.getMplsLabel() != 0) {
          setMplsLabel(other.getMplsLabel());
        }
        if (other.getMplsTrafficClass() != 0) {
          setMplsTrafficClass(other.getMplsTrafficClass());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionSettings_L2 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L2) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object srcMacAddress_ = "";
      /**
       * <code>string src_mac_address = 1;</code>
       * @return The srcMacAddress.
       */
      public java.lang.String getSrcMacAddress() {
        java.lang.Object ref = srcMacAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          srcMacAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string src_mac_address = 1;</code>
       * @return The bytes for srcMacAddress.
       */
      public com.google.protobuf.ByteString
          getSrcMacAddressBytes() {
        java.lang.Object ref = srcMacAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          srcMacAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string src_mac_address = 1;</code>
       * @param value The srcMacAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSrcMacAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        srcMacAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string src_mac_address = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSrcMacAddress() {
        
        srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
        onChanged();
        return this;
      }
      /**
       * <code>string src_mac_address = 1;</code>
       * @param value The bytes for srcMacAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSrcMacAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        srcMacAddress_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object dstMacAddress_ = "";
      /**
       * <code>string dst_mac_address = 2;</code>
       * @return The dstMacAddress.
       */
      public java.lang.String getDstMacAddress() {
        java.lang.Object ref = dstMacAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dstMacAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string dst_mac_address = 2;</code>
       * @return The bytes for dstMacAddress.
       */
      public com.google.protobuf.ByteString
          getDstMacAddressBytes() {
        java.lang.Object ref = dstMacAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dstMacAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string dst_mac_address = 2;</code>
       * @param value The dstMacAddress to set.
       * @return This builder for chaining.
       */
      public Builder setDstMacAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        dstMacAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string dst_mac_address = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDstMacAddress() {
        
        dstMacAddress_ = getDefaultInstance().getDstMacAddress();
        onChanged();
        return this;
      }
      /**
       * <code>string dst_mac_address = 2;</code>
       * @param value The bytes for dstMacAddress to set.
       * @return This builder for chaining.
       */
      public Builder setDstMacAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        dstMacAddress_ = value;
        onChanged();
        return this;
      }

      private int etherType_ ;
      /**
       * <code>uint32 ether_type = 3;</code>
       * @return The etherType.
       */
      @java.lang.Override
      public int getEtherType() {
        return etherType_;
      }
      /**
       * <code>uint32 ether_type = 3;</code>
       * @param value The etherType to set.
       * @return This builder for chaining.
       */
      public Builder setEtherType(int value) {
        
        etherType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 ether_type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEtherType() {
        
        etherType_ = 0;
        onChanged();
        return this;
      }

      private int vlanId_ ;
      /**
       * <code>uint32 vlan_id = 4;</code>
       * @return The vlanId.
       */
      @java.lang.Override
      public int getVlanId() {
        return vlanId_;
      }
      /**
       * <code>uint32 vlan_id = 4;</code>
       * @param value The vlanId to set.
       * @return This builder for chaining.
       */
      public Builder setVlanId(int value) {
        
        vlanId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 vlan_id = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearVlanId() {
        
        vlanId_ = 0;
        onChanged();
        return this;
      }

      private int mplsLabel_ ;
      /**
       * <code>uint32 mpls_label = 5;</code>
       * @return The mplsLabel.
       */
      @java.lang.Override
      public int getMplsLabel() {
        return mplsLabel_;
      }
      /**
       * <code>uint32 mpls_label = 5;</code>
       * @param value The mplsLabel to set.
       * @return This builder for chaining.
       */
      public Builder setMplsLabel(int value) {
        
        mplsLabel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 mpls_label = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearMplsLabel() {
        
        mplsLabel_ = 0;
        onChanged();
        return this;
      }

      private int mplsTrafficClass_ ;
      /**
       * <code>uint32 mpls_traffic_class = 6;</code>
       * @return The mplsTrafficClass.
       */
      @java.lang.Override
      public int getMplsTrafficClass() {
        return mplsTrafficClass_;
      }
      /**
       * <code>uint32 mpls_traffic_class = 6;</code>
       * @param value The mplsTrafficClass to set.
       * @return This builder for chaining.
       */
      public Builder setMplsTrafficClass(int value) {
        
        mplsTrafficClass_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 mpls_traffic_class = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMplsTrafficClass() {
        
        mplsTrafficClass_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L2)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L2)
    private static final context.ContextOuterClass.ConnectionSettings_L2 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L2();
    }

    public static context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionSettings_L3OrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L3)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string src_ip_address = 1;</code>
     * @return The srcIpAddress.
     */
    java.lang.String getSrcIpAddress();
    /**
     * <code>string src_ip_address = 1;</code>
     * @return The bytes for srcIpAddress.
     */
    com.google.protobuf.ByteString
        getSrcIpAddressBytes();

    /**
     * <code>string dst_ip_address = 2;</code>
     * @return The dstIpAddress.
     */
    java.lang.String getDstIpAddress();
    /**
     * <code>string dst_ip_address = 2;</code>
     * @return The bytes for dstIpAddress.
     */
    com.google.protobuf.ByteString
        getDstIpAddressBytes();

    /**
     * <code>uint32 dscp = 3;</code>
     * @return The dscp.
     */
    int getDscp();

    /**
     * <code>uint32 protocol = 4;</code>
     * @return The protocol.
     */
    int getProtocol();

    /**
     * <code>uint32 ttl = 5;</code>
     * @return The ttl.
     */
    int getTtl();
  }
  /**
   * Protobuf type {@code context.ConnectionSettings_L3}
   */
  public static final class ConnectionSettings_L3 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L3)
      ConnectionSettings_L3OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionSettings_L3.newBuilder() to construct.
    private ConnectionSettings_L3(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionSettings_L3() {
      srcIpAddress_ = "";
      dstIpAddress_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionSettings_L3();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionSettings_L3(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              dstIpAddress_ = s;
              break;
            }
            case 24: {

              dscp_ = input.readUInt32();
              break;
            }
            case 32: {

              protocol_ = input.readUInt32();
              break;
            }
            case 40: {

              ttl_ = input.readUInt32();
              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 context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
    }

    public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
    private volatile java.lang.Object srcIpAddress_;
    /**
     * <code>string src_ip_address = 1;</code>
     * @return The srcIpAddress.
     */
    @java.lang.Override
    public java.lang.String getSrcIpAddress() {
      java.lang.Object ref = srcIpAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        srcIpAddress_ = s;
        return s;
      }
    }
    /**
     * <code>string src_ip_address = 1;</code>
     * @return The bytes for srcIpAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSrcIpAddressBytes() {
      java.lang.Object ref = srcIpAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        srcIpAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DST_IP_ADDRESS_FIELD_NUMBER = 2;
    private volatile java.lang.Object dstIpAddress_;
    /**
     * <code>string dst_ip_address = 2;</code>
     * @return The dstIpAddress.
     */
    @java.lang.Override
    public java.lang.String getDstIpAddress() {
      java.lang.Object ref = dstIpAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        dstIpAddress_ = s;
        return s;
      }
    }
    /**
     * <code>string dst_ip_address = 2;</code>
     * @return The bytes for dstIpAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDstIpAddressBytes() {
      java.lang.Object ref = dstIpAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dstIpAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DSCP_FIELD_NUMBER = 3;
    private int dscp_;
    /**
     * <code>uint32 dscp = 3;</code>
     * @return The dscp.
     */
    @java.lang.Override
    public int getDscp() {
      return dscp_;
    }

    public static final int PROTOCOL_FIELD_NUMBER = 4;
    private int protocol_;
    /**
     * <code>uint32 protocol = 4;</code>
     * @return The protocol.
     */
    @java.lang.Override
    public int getProtocol() {
      return protocol_;
    }

    public static final int TTL_FIELD_NUMBER = 5;
    private int ttl_;
    /**
     * <code>uint32 ttl = 5;</code>
     * @return The ttl.
     */
    @java.lang.Override
    public int getTtl() {
      return ttl_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getSrcIpAddressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
      }
      if (!getDstIpAddressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
      }
      if (dscp_ != 0) {
        output.writeUInt32(3, dscp_);
      }
      if (protocol_ != 0) {
        output.writeUInt32(4, protocol_);
      }
      if (ttl_ != 0) {
        output.writeUInt32(5, ttl_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getSrcIpAddressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
      }
      if (!getDstIpAddressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
      }
      if (dscp_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, dscp_);
      }
      if (protocol_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, protocol_);
      }
      if (ttl_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, ttl_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L3)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionSettings_L3 other = (context.ContextOuterClass.ConnectionSettings_L3) obj;

      if (!getSrcIpAddress()
          .equals(other.getSrcIpAddress())) return false;
      if (!getDstIpAddress()
          .equals(other.getDstIpAddress())) return false;
      if (getDscp()
          != other.getDscp()) return false;
      if (getProtocol()
          != other.getProtocol()) return false;
      if (getTtl()
          != other.getTtl()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SRC_IP_ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getSrcIpAddress().hashCode();
      hash = (37 * hash) + DST_IP_ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getDstIpAddress().hashCode();
      hash = (37 * hash) + DSCP_FIELD_NUMBER;
      hash = (53 * hash) + getDscp();
      hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
      hash = (53 * hash) + getProtocol();
      hash = (37 * hash) + TTL_FIELD_NUMBER;
      hash = (53 * hash) + getTtl();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 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 context.ContextOuterClass.ConnectionSettings_L3 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 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 context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L3 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConnectionSettings_L3}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L3)
        context.ContextOuterClass.ConnectionSettings_L3OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        srcIpAddress_ = "";

        dstIpAddress_ = "";

        dscp_ = 0;

        protocol_ = 0;

        ttl_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L3 build() {
        context.ContextOuterClass.ConnectionSettings_L3 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
        context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
        result.srcIpAddress_ = srcIpAddress_;
        result.dstIpAddress_ = dstIpAddress_;
        result.dscp_ = dscp_;
        result.protocol_ = protocol_;
        result.ttl_ = ttl_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionSettings_L3) {
          return mergeFrom((context.ContextOuterClass.ConnectionSettings_L3)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L3 other) {
        if (other == context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) return this;
        if (!other.getSrcIpAddress().isEmpty()) {
          srcIpAddress_ = other.srcIpAddress_;
          onChanged();
        }
        if (!other.getDstIpAddress().isEmpty()) {
          dstIpAddress_ = other.dstIpAddress_;
          onChanged();
        }
        if (other.getDscp() != 0) {
          setDscp(other.getDscp());
        }
        if (other.getProtocol() != 0) {
          setProtocol(other.getProtocol());
        }
        if (other.getTtl() != 0) {
          setTtl(other.getTtl());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionSettings_L3 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L3) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object srcIpAddress_ = "";
      /**
       * <code>string src_ip_address = 1;</code>
       * @return The srcIpAddress.
       */
      public java.lang.String getSrcIpAddress() {
        java.lang.Object ref = srcIpAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          srcIpAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string src_ip_address = 1;</code>
       * @return The bytes for srcIpAddress.
       */
      public com.google.protobuf.ByteString
          getSrcIpAddressBytes() {
        java.lang.Object ref = srcIpAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          srcIpAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string src_ip_address = 1;</code>
       * @param value The srcIpAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSrcIpAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        srcIpAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string src_ip_address = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSrcIpAddress() {
        
        srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
        onChanged();
        return this;
      }
      /**
       * <code>string src_ip_address = 1;</code>
       * @param value The bytes for srcIpAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSrcIpAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        srcIpAddress_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object dstIpAddress_ = "";
      /**
       * <code>string dst_ip_address = 2;</code>
       * @return The dstIpAddress.
       */
      public java.lang.String getDstIpAddress() {
        java.lang.Object ref = dstIpAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dstIpAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string dst_ip_address = 2;</code>
       * @return The bytes for dstIpAddress.
       */
      public com.google.protobuf.ByteString
          getDstIpAddressBytes() {
        java.lang.Object ref = dstIpAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dstIpAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string dst_ip_address = 2;</code>
       * @param value The dstIpAddress to set.
       * @return This builder for chaining.
       */
      public Builder setDstIpAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        dstIpAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string dst_ip_address = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDstIpAddress() {
        
        dstIpAddress_ = getDefaultInstance().getDstIpAddress();
        onChanged();
        return this;
      }
      /**
       * <code>string dst_ip_address = 2;</code>
       * @param value The bytes for dstIpAddress to set.
       * @return This builder for chaining.
       */
      public Builder setDstIpAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        dstIpAddress_ = value;
        onChanged();
        return this;
      }

      private int dscp_ ;
      /**
       * <code>uint32 dscp = 3;</code>
       * @return The dscp.
       */
      @java.lang.Override
      public int getDscp() {
        return dscp_;
      }
      /**
       * <code>uint32 dscp = 3;</code>
       * @param value The dscp to set.
       * @return This builder for chaining.
       */
      public Builder setDscp(int value) {
        
        dscp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 dscp = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDscp() {
        
        dscp_ = 0;
        onChanged();
        return this;
      }

      private int protocol_ ;
      /**
       * <code>uint32 protocol = 4;</code>
       * @return The protocol.
       */
      @java.lang.Override
      public int getProtocol() {
        return protocol_;
      }
      /**
       * <code>uint32 protocol = 4;</code>
       * @param value The protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocol(int value) {
        
        protocol_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 protocol = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtocol() {
        
        protocol_ = 0;
        onChanged();
        return this;
      }

      private int ttl_ ;
      /**
       * <code>uint32 ttl = 5;</code>
       * @return The ttl.
       */
      @java.lang.Override
      public int getTtl() {
        return ttl_;
      }
      /**
       * <code>uint32 ttl = 5;</code>
       * @param value The ttl to set.
       * @return This builder for chaining.
       */
      public Builder setTtl(int value) {
        
        ttl_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 ttl = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTtl() {
        
        ttl_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L3)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L3)
    private static final context.ContextOuterClass.ConnectionSettings_L3 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L3();
    }

    public static context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionSettings_L4OrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L4)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>uint32 src_port = 1;</code>
     * @return The srcPort.
     */
    int getSrcPort();

    /**
     * <code>uint32 dst_port = 2;</code>
     * @return The dstPort.
     */
    int getDstPort();

    /**
     * <code>uint32 tcp_flags = 3;</code>
     * @return The tcpFlags.
     */
    int getTcpFlags();

    /**
     * <code>uint32 ttl = 4;</code>
     * @return The ttl.
     */
    int getTtl();
  }
  /**
   * Protobuf type {@code context.ConnectionSettings_L4}
   */
  public static final class ConnectionSettings_L4 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L4)
      ConnectionSettings_L4OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionSettings_L4.newBuilder() to construct.
    private ConnectionSettings_L4(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionSettings_L4() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionSettings_L4();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionSettings_L4(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {

              srcPort_ = input.readUInt32();
              break;
            }
            case 16: {

              dstPort_ = input.readUInt32();
              break;
            }
            case 24: {

              tcpFlags_ = input.readUInt32();
              break;
            }
            case 32: {

              ttl_ = input.readUInt32();
              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 context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
    }

    public static final int SRC_PORT_FIELD_NUMBER = 1;
    private int srcPort_;
    /**
     * <code>uint32 src_port = 1;</code>
     * @return The srcPort.
     */
    @java.lang.Override
    public int getSrcPort() {
      return srcPort_;
    }

    public static final int DST_PORT_FIELD_NUMBER = 2;
    private int dstPort_;
    /**
     * <code>uint32 dst_port = 2;</code>
     * @return The dstPort.
     */
    @java.lang.Override
    public int getDstPort() {
      return dstPort_;
    }

    public static final int TCP_FLAGS_FIELD_NUMBER = 3;
    private int tcpFlags_;
    /**
     * <code>uint32 tcp_flags = 3;</code>
     * @return The tcpFlags.
     */
    @java.lang.Override
    public int getTcpFlags() {
      return tcpFlags_;
    }

    public static final int TTL_FIELD_NUMBER = 4;
    private int ttl_;
    /**
     * <code>uint32 ttl = 4;</code>
     * @return The ttl.
     */
    @java.lang.Override
    public int getTtl() {
      return ttl_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (srcPort_ != 0) {
        output.writeUInt32(1, srcPort_);
      }
      if (dstPort_ != 0) {
        output.writeUInt32(2, dstPort_);
      }
      if (tcpFlags_ != 0) {
        output.writeUInt32(3, tcpFlags_);
      }
      if (ttl_ != 0) {
        output.writeUInt32(4, ttl_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (srcPort_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, srcPort_);
      }
      if (dstPort_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, dstPort_);
      }
      if (tcpFlags_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, tcpFlags_);
      }
      if (ttl_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, ttl_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L4)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionSettings_L4 other = (context.ContextOuterClass.ConnectionSettings_L4) obj;

      if (getSrcPort()
          != other.getSrcPort()) return false;
      if (getDstPort()
          != other.getDstPort()) return false;
      if (getTcpFlags()
          != other.getTcpFlags()) return false;
      if (getTtl()
          != other.getTtl()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
      hash = (53 * hash) + getSrcPort();
      hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
      hash = (53 * hash) + getDstPort();
      hash = (37 * hash) + TCP_FLAGS_FIELD_NUMBER;
      hash = (53 * hash) + getTcpFlags();
      hash = (37 * hash) + TTL_FIELD_NUMBER;
      hash = (53 * hash) + getTtl();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 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 context.ContextOuterClass.ConnectionSettings_L4 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 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 context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L4 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConnectionSettings_L4}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L4)
        context.ContextOuterClass.ConnectionSettings_L4OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        srcPort_ = 0;

        dstPort_ = 0;

        tcpFlags_ = 0;

        ttl_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L4 build() {
        context.ContextOuterClass.ConnectionSettings_L4 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
        context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
        result.srcPort_ = srcPort_;
        result.dstPort_ = dstPort_;
        result.tcpFlags_ = tcpFlags_;
        result.ttl_ = ttl_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionSettings_L4) {
          return mergeFrom((context.ContextOuterClass.ConnectionSettings_L4)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L4 other) {
        if (other == context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) return this;
        if (other.getSrcPort() != 0) {
          setSrcPort(other.getSrcPort());
        }
        if (other.getDstPort() != 0) {
          setDstPort(other.getDstPort());
        }
        if (other.getTcpFlags() != 0) {
          setTcpFlags(other.getTcpFlags());
        }
        if (other.getTtl() != 0) {
          setTtl(other.getTtl());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionSettings_L4 parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L4) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int srcPort_ ;
      /**
       * <code>uint32 src_port = 1;</code>
       * @return The srcPort.
       */
      @java.lang.Override
      public int getSrcPort() {
        return srcPort_;
      }
      /**
       * <code>uint32 src_port = 1;</code>
       * @param value The srcPort to set.
       * @return This builder for chaining.
       */
      public Builder setSrcPort(int value) {
        
        srcPort_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 src_port = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSrcPort() {
        
        srcPort_ = 0;
        onChanged();
        return this;
      }

      private int dstPort_ ;
      /**
       * <code>uint32 dst_port = 2;</code>
       * @return The dstPort.
       */
      @java.lang.Override
      public int getDstPort() {
        return dstPort_;
      }
      /**
       * <code>uint32 dst_port = 2;</code>
       * @param value The dstPort to set.
       * @return This builder for chaining.
       */
      public Builder setDstPort(int value) {
        
        dstPort_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 dst_port = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDstPort() {
        
        dstPort_ = 0;
        onChanged();
        return this;
      }

      private int tcpFlags_ ;
      /**
       * <code>uint32 tcp_flags = 3;</code>
       * @return The tcpFlags.
       */
      @java.lang.Override
      public int getTcpFlags() {
        return tcpFlags_;
      }
      /**
       * <code>uint32 tcp_flags = 3;</code>
       * @param value The tcpFlags to set.
       * @return This builder for chaining.
       */
      public Builder setTcpFlags(int value) {
        
        tcpFlags_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 tcp_flags = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTcpFlags() {
        
        tcpFlags_ = 0;
        onChanged();
        return this;
      }

      private int ttl_ ;
      /**
       * <code>uint32 ttl = 4;</code>
       * @return The ttl.
       */
      @java.lang.Override
      public int getTtl() {
        return ttl_;
      }
      /**
       * <code>uint32 ttl = 4;</code>
       * @param value The ttl to set.
       * @return This builder for chaining.
       */
      public Builder setTtl(int value) {
        
        ttl_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 ttl = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTtl() {
        
        ttl_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L4)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L4)
    private static final context.ContextOuterClass.ConnectionSettings_L4 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L4();
    }

    public static context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionSettingsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
     * @return Whether the l0 field is set.
     */
    boolean hasL0();
    /**
     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
     * @return The l0.
     */
    context.ContextOuterClass.ConnectionSettings_L0 getL0();
    /**
     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
     */
    context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder();

    /**
     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
     * @return Whether the l2 field is set.
     */
    boolean hasL2();
    /**
     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
     * @return The l2.
     */
    context.ContextOuterClass.ConnectionSettings_L2 getL2();
    /**
     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
     */
    context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder();

    /**
     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
     * @return Whether the l3 field is set.
     */
    boolean hasL3();
    /**
     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
     * @return The l3.
     */
    context.ContextOuterClass.ConnectionSettings_L3 getL3();
    /**
     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
     */
    context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder();

    /**
     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
     * @return Whether the l4 field is set.
     */
    boolean hasL4();
    /**
     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
     * @return The l4.
     */
    context.ContextOuterClass.ConnectionSettings_L4 getL4();
    /**
     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
     */
    context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder();
  }
  /**
   * Protobuf type {@code context.ConnectionSettings}
   */
  public static final class ConnectionSettings extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionSettings)
      ConnectionSettingsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionSettings.newBuilder() to construct.
    private ConnectionSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionSettings() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionSettings();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionSettings(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ConnectionSettings_L0.Builder subBuilder = null;
              if (l0_ != null) {
                subBuilder = l0_.toBuilder();
              }
              l0_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L0.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(l0_);
                l0_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.ConnectionSettings_L2.Builder subBuilder = null;
              if (l2_ != null) {
                subBuilder = l2_.toBuilder();
              }
              l2_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L2.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(l2_);
                l2_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              context.ContextOuterClass.ConnectionSettings_L3.Builder subBuilder = null;
              if (l3_ != null) {
                subBuilder = l3_.toBuilder();
              }
              l3_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L3.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(l3_);
                l3_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              context.ContextOuterClass.ConnectionSettings_L4.Builder subBuilder = null;
              if (l4_ != null) {
                subBuilder = l4_.toBuilder();
              }
              l4_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L4.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(l4_);
                l4_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
    }

    public static final int L0_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ConnectionSettings_L0 l0_;
    /**
     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
     * @return Whether the l0 field is set.
     */
    @java.lang.Override
    public boolean hasL0() {
      return l0_ != null;
    }
    /**
     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
     * @return The l0.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
      return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
    }
    /**
     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
      return getL0();
    }

    public static final int L2_FIELD_NUMBER = 2;
    private context.ContextOuterClass.ConnectionSettings_L2 l2_;
    /**
     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
     * @return Whether the l2 field is set.
     */
    @java.lang.Override
    public boolean hasL2() {
      return l2_ != null;
    }
    /**
     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
     * @return The l2.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
      return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
    }
    /**
     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
      return getL2();
    }

    public static final int L3_FIELD_NUMBER = 3;
    private context.ContextOuterClass.ConnectionSettings_L3 l3_;
    /**
     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
     * @return Whether the l3 field is set.
     */
    @java.lang.Override
    public boolean hasL3() {
      return l3_ != null;
    }
    /**
     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
     * @return The l3.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L3 getL3() {
      return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
    }
    /**
     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
      return getL3();
    }

    public static final int L4_FIELD_NUMBER = 4;
    private context.ContextOuterClass.ConnectionSettings_L4 l4_;
    /**
     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
     * @return Whether the l4 field is set.
     */
    @java.lang.Override
    public boolean hasL4() {
      return l4_ != null;
    }
    /**
     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
     * @return The l4.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
      return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
    }
    /**
     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
      return getL4();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (l0_ != null) {
        output.writeMessage(1, getL0());
      }
      if (l2_ != null) {
        output.writeMessage(2, getL2());
      }
      if (l3_ != null) {
        output.writeMessage(3, getL3());
      }
      if (l4_ != null) {
        output.writeMessage(4, getL4());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (l0_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getL0());
      }
      if (l2_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getL2());
      }
      if (l3_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getL3());
      }
      if (l4_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getL4());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionSettings other = (context.ContextOuterClass.ConnectionSettings) obj;

      if (hasL0() != other.hasL0()) return false;
      if (hasL0()) {
        if (!getL0()
            .equals(other.getL0())) return false;
      }
      if (hasL2() != other.hasL2()) return false;
      if (hasL2()) {
        if (!getL2()
            .equals(other.getL2())) return false;
      }
      if (hasL3() != other.hasL3()) return false;
      if (hasL3()) {
        if (!getL3()
            .equals(other.getL3())) return false;
      }
      if (hasL4() != other.hasL4()) return false;
      if (hasL4()) {
        if (!getL4()
            .equals(other.getL4())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasL0()) {
        hash = (37 * hash) + L0_FIELD_NUMBER;
        hash = (53 * hash) + getL0().hashCode();
      }
      if (hasL2()) {
        hash = (37 * hash) + L2_FIELD_NUMBER;
        hash = (53 * hash) + getL2().hashCode();
      }
      if (hasL3()) {
        hash = (37 * hash) + L3_FIELD_NUMBER;
        hash = (53 * hash) + getL3().hashCode();
      }
      if (hasL4()) {
        hash = (37 * hash) + L4_FIELD_NUMBER;
        hash = (53 * hash) + getL4().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ConnectionSettings parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionSettings parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionSettings parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings 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 context.ContextOuterClass.ConnectionSettings parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings 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 context.ContextOuterClass.ConnectionSettings parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionSettings parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConnectionSettings}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings)
        context.ContextOuterClass.ConnectionSettingsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (l0Builder_ == null) {
          l0_ = null;
        } else {
          l0_ = null;
          l0Builder_ = null;
        }
        if (l2Builder_ == null) {
          l2_ = null;
        } else {
          l2_ = null;
          l2Builder_ = null;
        }
        if (l3Builder_ == null) {
          l3_ = null;
        } else {
          l3_ = null;
          l3Builder_ = null;
        }
        if (l4Builder_ == null) {
          l4_ = null;
        } else {
          l4_ = null;
          l4Builder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionSettings.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings build() {
        context.ContextOuterClass.ConnectionSettings result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionSettings buildPartial() {
        context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
        if (l0Builder_ == null) {
          result.l0_ = l0_;
        } else {
          result.l0_ = l0Builder_.build();
        }
        if (l2Builder_ == null) {
          result.l2_ = l2_;
        } else {
          result.l2_ = l2Builder_.build();
        }
        if (l3Builder_ == null) {
          result.l3_ = l3_;
        } else {
          result.l3_ = l3Builder_.build();
        }
        if (l4Builder_ == null) {
          result.l4_ = l4_;
        } else {
          result.l4_ = l4Builder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionSettings) {
          return mergeFrom((context.ContextOuterClass.ConnectionSettings)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings other) {
        if (other == context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) return this;
        if (other.hasL0()) {
          mergeL0(other.getL0());
        }
        if (other.hasL2()) {
          mergeL2(other.getL2());
        }
        if (other.hasL3()) {
          mergeL3(other.getL3());
        }
        if (other.hasL4()) {
          mergeL4(other.getL4());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionSettings parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.ConnectionSettings_L0 l0_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> l0Builder_;
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       * @return Whether the l0 field is set.
       */
      public boolean hasL0() {
        return l0Builder_ != null || l0_ != null;
      }
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       * @return The l0.
       */
      public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
        if (l0Builder_ == null) {
          return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
        } else {
          return l0Builder_.getMessage();
        }
      }
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       */
      public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
        if (l0Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          l0_ = value;
          onChanged();
        } else {
          l0Builder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       */
      public Builder setL0(
          context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
        if (l0Builder_ == null) {
          l0_ = builderForValue.build();
          onChanged();
        } else {
          l0Builder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       */
      public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
        if (l0Builder_ == null) {
          if (l0_ != null) {
            l0_ =
              context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
          } else {
            l0_ = value;
          }
          onChanged();
        } else {
          l0Builder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       */
      public Builder clearL0() {
        if (l0Builder_ == null) {
          l0_ = null;
          onChanged();
        } else {
          l0_ = null;
          l0Builder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       */
      public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
        
        onChanged();
        return getL0FieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       */
      public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
        if (l0Builder_ != null) {
          return l0Builder_.getMessageOrBuilder();
        } else {
          return l0_ == null ?
              context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
        }
      }
      /**
       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> 
          getL0FieldBuilder() {
        if (l0Builder_ == null) {
          l0Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder>(
                  getL0(),
                  getParentForChildren(),
                  isClean());
          l0_ = null;
        }
        return l0Builder_;
      }

      private context.ContextOuterClass.ConnectionSettings_L2 l2_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> l2Builder_;
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       * @return Whether the l2 field is set.
       */
      public boolean hasL2() {
        return l2Builder_ != null || l2_ != null;
      }
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       * @return The l2.
       */
      public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
        if (l2Builder_ == null) {
          return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
        } else {
          return l2Builder_.getMessage();
        }
      }
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       */
      public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
        if (l2Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          l2_ = value;
          onChanged();
        } else {
          l2Builder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       */
      public Builder setL2(
          context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
        if (l2Builder_ == null) {
          l2_ = builderForValue.build();
          onChanged();
        } else {
          l2Builder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       */
      public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
        if (l2Builder_ == null) {
          if (l2_ != null) {
            l2_ =
              context.ContextOuterClass.ConnectionSettings_L2.newBuilder(l2_).mergeFrom(value).buildPartial();
          } else {
            l2_ = value;
          }
          onChanged();
        } else {
          l2Builder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       */
      public Builder clearL2() {
        if (l2Builder_ == null) {
          l2_ = null;
          onChanged();
        } else {
          l2_ = null;
          l2Builder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       */
      public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
        
        onChanged();
        return getL2FieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       */
      public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
        if (l2Builder_ != null) {
          return l2Builder_.getMessageOrBuilder();
        } else {
          return l2_ == null ?
              context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
        }
      }
      /**
       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> 
          getL2FieldBuilder() {
        if (l2Builder_ == null) {
          l2Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder>(
                  getL2(),
                  getParentForChildren(),
                  isClean());
          l2_ = null;
        }
        return l2Builder_;
      }

      private context.ContextOuterClass.ConnectionSettings_L3 l3_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> l3Builder_;
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       * @return Whether the l3 field is set.
       */
      public boolean hasL3() {
        return l3Builder_ != null || l3_ != null;
      }
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       * @return The l3.
       */
      public context.ContextOuterClass.ConnectionSettings_L3 getL3() {
        if (l3Builder_ == null) {
          return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
        } else {
          return l3Builder_.getMessage();
        }
      }
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       */
      public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
        if (l3Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          l3_ = value;
          onChanged();
        } else {
          l3Builder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       */
      public Builder setL3(
          context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
        if (l3Builder_ == null) {
          l3_ = builderForValue.build();
          onChanged();
        } else {
          l3Builder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       */
      public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
        if (l3Builder_ == null) {
          if (l3_ != null) {
            l3_ =
              context.ContextOuterClass.ConnectionSettings_L3.newBuilder(l3_).mergeFrom(value).buildPartial();
          } else {
            l3_ = value;
          }
          onChanged();
        } else {
          l3Builder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       */
      public Builder clearL3() {
        if (l3Builder_ == null) {
          l3_ = null;
          onChanged();
        } else {
          l3_ = null;
          l3Builder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       */
      public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
        
        onChanged();
        return getL3FieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       */
      public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
        if (l3Builder_ != null) {
          return l3Builder_.getMessageOrBuilder();
        } else {
          return l3_ == null ?
              context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
        }
      }
      /**
       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> 
          getL3FieldBuilder() {
        if (l3Builder_ == null) {
          l3Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder>(
                  getL3(),
                  getParentForChildren(),
                  isClean());
          l3_ = null;
        }
        return l3Builder_;
      }

      private context.ContextOuterClass.ConnectionSettings_L4 l4_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> l4Builder_;
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       * @return Whether the l4 field is set.
       */
      public boolean hasL4() {
        return l4Builder_ != null || l4_ != null;
      }
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       * @return The l4.
       */
      public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
        if (l4Builder_ == null) {
          return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
        } else {
          return l4Builder_.getMessage();
        }
      }
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       */
      public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
        if (l4Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          l4_ = value;
          onChanged();
        } else {
          l4Builder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       */
      public Builder setL4(
          context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
        if (l4Builder_ == null) {
          l4_ = builderForValue.build();
          onChanged();
        } else {
          l4Builder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       */
      public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
        if (l4Builder_ == null) {
          if (l4_ != null) {
            l4_ =
              context.ContextOuterClass.ConnectionSettings_L4.newBuilder(l4_).mergeFrom(value).buildPartial();
          } else {
            l4_ = value;
          }
          onChanged();
        } else {
          l4Builder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       */
      public Builder clearL4() {
        if (l4Builder_ == null) {
          l4_ = null;
          onChanged();
        } else {
          l4_ = null;
          l4Builder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       */
      public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
        
        onChanged();
        return getL4FieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       */
      public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
        if (l4Builder_ != null) {
          return l4Builder_.getMessageOrBuilder();
        } else {
          return l4_ == null ?
              context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
        }
      }
      /**
       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> 
          getL4FieldBuilder() {
        if (l4Builder_ == null) {
          l4Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder>(
                  getL4(),
                  getParentForChildren(),
                  isClean());
          l4_ = null;
        }
        return l4Builder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionSettings)
    private static final context.ContextOuterClass.ConnectionSettings DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings();
    }

    public static context.ContextOuterClass.ConnectionSettings getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Connection)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ConnectionId connection_id = 1;</code>
     * @return Whether the connectionId field is set.
     */
    boolean hasConnectionId();
    /**
     * <code>.context.ConnectionId connection_id = 1;</code>
     * @return The connectionId.
     */
    context.ContextOuterClass.ConnectionId getConnectionId();
    /**
     * <code>.context.ConnectionId connection_id = 1;</code>
     */
    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();

    /**
     * <code>.context.ServiceId service_id = 2;</code>
     * @return Whether the serviceId field is set.
     */
    boolean hasServiceId();
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     * @return The serviceId.
     */
    context.ContextOuterClass.ServiceId getServiceId();
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     */
    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();

    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    java.util.List<context.ContextOuterClass.EndPointId> 
        getPathHopsEndpointIdsList();
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index);
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    int getPathHopsEndpointIdsCount();
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getPathHopsEndpointIdsOrBuilderList();
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(
        int index);

    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    java.util.List<context.ContextOuterClass.ServiceId> 
        getSubServiceIdsList();
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    context.ContextOuterClass.ServiceId getSubServiceIds(int index);
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    int getSubServiceIdsCount();
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
        getSubServiceIdsOrBuilderList();
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
        int index);

    /**
     * <code>.context.ConnectionSettings settings = 5;</code>
     * @return Whether the settings field is set.
     */
    boolean hasSettings();
    /**
     * <code>.context.ConnectionSettings settings = 5;</code>
     * @return The settings.
     */
    context.ContextOuterClass.ConnectionSettings getSettings();
    /**
     * <code>.context.ConnectionSettings settings = 5;</code>
     */
    context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder();
  }
  /**
   * Protobuf type {@code context.Connection}
   */
  public static final class Connection extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Connection)
      ConnectionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Connection.newBuilder() to construct.
    private Connection(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Connection() {
      pathHopsEndpointIds_ = java.util.Collections.emptyList();
      subServiceIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Connection();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Connection(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
              if (connectionId_ != null) {
                subBuilder = connectionId_.toBuilder();
              }
              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(connectionId_);
                connectionId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
              if (serviceId_ != null) {
                subBuilder = serviceId_.toBuilder();
              }
              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(serviceId_);
                serviceId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
                mutable_bitField0_ |= 0x00000001;
              }
              pathHopsEndpointIds_.add(
                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
                mutable_bitField0_ |= 0x00000002;
              }
              subServiceIds_.add(
                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
              break;
            }
            case 42: {
              context.ContextOuterClass.ConnectionSettings.Builder subBuilder = null;
              if (settings_ != null) {
                subBuilder = settings_.toBuilder();
              }
              settings_ = input.readMessage(context.ContextOuterClass.ConnectionSettings.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(settings_);
                settings_ = subBuilder.buildPartial();
              }

              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Connection_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
    }

    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ConnectionId connectionId_;
    /**
     * <code>.context.ConnectionId connection_id = 1;</code>
     * @return Whether the connectionId field is set.
     */
    @java.lang.Override
    public boolean hasConnectionId() {
      return connectionId_ != null;
    }
    /**
     * <code>.context.ConnectionId connection_id = 1;</code>
     * @return The connectionId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionId getConnectionId() {
      return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
    }
    /**
     * <code>.context.ConnectionId connection_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
      return getConnectionId();
    }

    public static final int SERVICE_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.ServiceId serviceId_;
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     * @return Whether the serviceId field is set.
     */
    @java.lang.Override
    public boolean hasServiceId() {
      return serviceId_ != null;
    }
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     * @return The serviceId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceId getServiceId() {
      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
    }
    /**
     * <code>.context.ServiceId service_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
      return getServiceId();
    }

    public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
    private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_;
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList() {
      return pathHopsEndpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getPathHopsEndpointIdsOrBuilderList() {
      return pathHopsEndpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public int getPathHopsEndpointIdsCount() {
      return pathHopsEndpointIds_.size();
    }
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index) {
      return pathHopsEndpointIds_.get(index);
    }
    /**
     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(
        int index) {
      return pathHopsEndpointIds_.get(index);
    }

    public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
    private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_;
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
      return subServiceIds_;
    }
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
        getSubServiceIdsOrBuilderList() {
      return subServiceIds_;
    }
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    @java.lang.Override
    public int getSubServiceIdsCount() {
      return subServiceIds_.size();
    }
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
      return subServiceIds_.get(index);
    }
    /**
     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
        int index) {
      return subServiceIds_.get(index);
    }

    public static final int SETTINGS_FIELD_NUMBER = 5;
    private context.ContextOuterClass.ConnectionSettings settings_;
    /**
     * <code>.context.ConnectionSettings settings = 5;</code>
     * @return Whether the settings field is set.
     */
    @java.lang.Override
    public boolean hasSettings() {
      return settings_ != null;
    }
    /**
     * <code>.context.ConnectionSettings settings = 5;</code>
     * @return The settings.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettings getSettings() {
      return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
    }
    /**
     * <code>.context.ConnectionSettings settings = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
      return getSettings();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (connectionId_ != null) {
        output.writeMessage(1, getConnectionId());
      }
      if (serviceId_ != null) {
        output.writeMessage(2, getServiceId());
      }
      for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
        output.writeMessage(3, pathHopsEndpointIds_.get(i));
      }
      for (int i = 0; i < subServiceIds_.size(); i++) {
        output.writeMessage(4, subServiceIds_.get(i));
      }
      if (settings_ != null) {
        output.writeMessage(5, getSettings());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (connectionId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getConnectionId());
      }
      if (serviceId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getServiceId());
      }
      for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, pathHopsEndpointIds_.get(i));
      }
      for (int i = 0; i < subServiceIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, subServiceIds_.get(i));
      }
      if (settings_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSettings());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Connection)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Connection other = (context.ContextOuterClass.Connection) obj;

      if (hasConnectionId() != other.hasConnectionId()) return false;
      if (hasConnectionId()) {
        if (!getConnectionId()
            .equals(other.getConnectionId())) return false;
      }
      if (hasServiceId() != other.hasServiceId()) return false;
      if (hasServiceId()) {
        if (!getServiceId()
            .equals(other.getServiceId())) return false;
      }
      if (!getPathHopsEndpointIdsList()
          .equals(other.getPathHopsEndpointIdsList())) return false;
      if (!getSubServiceIdsList()
          .equals(other.getSubServiceIdsList())) return false;
      if (hasSettings() != other.hasSettings()) return false;
      if (hasSettings()) {
        if (!getSettings()
            .equals(other.getSettings())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasConnectionId()) {
        hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
        hash = (53 * hash) + getConnectionId().hashCode();
      }
      if (hasServiceId()) {
        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getServiceId().hashCode();
      }
      if (getPathHopsEndpointIdsCount() > 0) {
        hash = (37 * hash) + PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getPathHopsEndpointIdsList().hashCode();
      }
      if (getSubServiceIdsCount() > 0) {
        hash = (37 * hash) + SUB_SERVICE_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getSubServiceIdsList().hashCode();
      }
      if (hasSettings()) {
        hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
        hash = (53 * hash) + getSettings().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Connection parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Connection parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Connection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Connection parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Connection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Connection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Connection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Connection 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 context.ContextOuterClass.Connection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Connection 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 context.ContextOuterClass.Connection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Connection parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Connection prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Connection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Connection)
        context.ContextOuterClass.ConnectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Connection_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
      }

      // Construct using context.ContextOuterClass.Connection.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPathHopsEndpointIdsFieldBuilder();
          getSubServiceIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (connectionIdBuilder_ == null) {
          connectionId_ = null;
        } else {
          connectionId_ = null;
          connectionIdBuilder_ = null;
        }
        if (serviceIdBuilder_ == null) {
          serviceId_ = null;
        } else {
          serviceId_ = null;
          serviceIdBuilder_ = null;
        }
        if (pathHopsEndpointIdsBuilder_ == null) {
          pathHopsEndpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          pathHopsEndpointIdsBuilder_.clear();
        }
        if (subServiceIdsBuilder_ == null) {
          subServiceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          subServiceIdsBuilder_.clear();
        }
        if (settingsBuilder_ == null) {
          settings_ = null;
        } else {
          settings_ = null;
          settingsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Connection_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Connection getDefaultInstanceForType() {
        return context.ContextOuterClass.Connection.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Connection build() {
        context.ContextOuterClass.Connection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Connection buildPartial() {
        context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
        int from_bitField0_ = bitField0_;
        if (connectionIdBuilder_ == null) {
          result.connectionId_ = connectionId_;
        } else {
          result.connectionId_ = connectionIdBuilder_.build();
        }
        if (serviceIdBuilder_ == null) {
          result.serviceId_ = serviceId_;
        } else {
          result.serviceId_ = serviceIdBuilder_.build();
        }
        if (pathHopsEndpointIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
        } else {
          result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
        }
        if (subServiceIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.subServiceIds_ = subServiceIds_;
        } else {
          result.subServiceIds_ = subServiceIdsBuilder_.build();
        }
        if (settingsBuilder_ == null) {
          result.settings_ = settings_;
        } else {
          result.settings_ = settingsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Connection) {
          return mergeFrom((context.ContextOuterClass.Connection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Connection other) {
        if (other == context.ContextOuterClass.Connection.getDefaultInstance()) return this;
        if (other.hasConnectionId()) {
          mergeConnectionId(other.getConnectionId());
        }
        if (other.hasServiceId()) {
          mergeServiceId(other.getServiceId());
        }
        if (pathHopsEndpointIdsBuilder_ == null) {
          if (!other.pathHopsEndpointIds_.isEmpty()) {
            if (pathHopsEndpointIds_.isEmpty()) {
              pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePathHopsEndpointIdsIsMutable();
              pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
            }
            onChanged();
          }
        } else {
          if (!other.pathHopsEndpointIds_.isEmpty()) {
            if (pathHopsEndpointIdsBuilder_.isEmpty()) {
              pathHopsEndpointIdsBuilder_.dispose();
              pathHopsEndpointIdsBuilder_ = null;
              pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              pathHopsEndpointIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPathHopsEndpointIdsFieldBuilder() : null;
            } else {
              pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
            }
          }
        }
        if (subServiceIdsBuilder_ == null) {
          if (!other.subServiceIds_.isEmpty()) {
            if (subServiceIds_.isEmpty()) {
              subServiceIds_ = other.subServiceIds_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSubServiceIdsIsMutable();
              subServiceIds_.addAll(other.subServiceIds_);
            }
            onChanged();
          }
        } else {
          if (!other.subServiceIds_.isEmpty()) {
            if (subServiceIdsBuilder_.isEmpty()) {
              subServiceIdsBuilder_.dispose();
              subServiceIdsBuilder_ = null;
              subServiceIds_ = other.subServiceIds_;
              bitField0_ = (bitField0_ & ~0x00000002);
              subServiceIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSubServiceIdsFieldBuilder() : null;
            } else {
              subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
            }
          }
        }
        if (other.hasSettings()) {
          mergeSettings(other.getSettings());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Connection parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Connection) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.ConnectionId connectionId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       * @return Whether the connectionId field is set.
       */
      public boolean hasConnectionId() {
        return connectionIdBuilder_ != null || connectionId_ != null;
      }
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       * @return The connectionId.
       */
      public context.ContextOuterClass.ConnectionId getConnectionId() {
        if (connectionIdBuilder_ == null) {
          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
        } else {
          return connectionIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       */
      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
        if (connectionIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectionId_ = value;
          onChanged();
        } else {
          connectionIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       */
      public Builder setConnectionId(
          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
        if (connectionIdBuilder_ == null) {
          connectionId_ = builderForValue.build();
          onChanged();
        } else {
          connectionIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       */
      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
        if (connectionIdBuilder_ == null) {
          if (connectionId_ != null) {
            connectionId_ =
              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
          } else {
            connectionId_ = value;
          }
          onChanged();
        } else {
          connectionIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       */
      public Builder clearConnectionId() {
        if (connectionIdBuilder_ == null) {
          connectionId_ = null;
          onChanged();
        } else {
          connectionId_ = null;
          connectionIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       */
      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
        
        onChanged();
        return getConnectionIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       */
      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
        if (connectionIdBuilder_ != null) {
          return connectionIdBuilder_.getMessageOrBuilder();
        } else {
          return connectionId_ == null ?
              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
        }
      }
      /**
       * <code>.context.ConnectionId connection_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> 
          getConnectionIdFieldBuilder() {
        if (connectionIdBuilder_ == null) {
          connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(
                  getConnectionId(),
                  getParentForChildren(),
                  isClean());
          connectionId_ = null;
        }
        return connectionIdBuilder_;
      }

      private context.ContextOuterClass.ServiceId serviceId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       * @return Whether the serviceId field is set.
       */
      public boolean hasServiceId() {
        return serviceIdBuilder_ != null || serviceId_ != null;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       * @return The serviceId.
       */
      public context.ContextOuterClass.ServiceId getServiceId() {
        if (serviceIdBuilder_ == null) {
          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        } else {
          return serviceIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
        if (serviceIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          serviceId_ = value;
          onChanged();
        } else {
          serviceIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public Builder setServiceId(
          context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (serviceIdBuilder_ == null) {
          serviceId_ = builderForValue.build();
          onChanged();
        } else {
          serviceIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
        if (serviceIdBuilder_ == null) {
          if (serviceId_ != null) {
            serviceId_ =
              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
          } else {
            serviceId_ = value;
          }
          onChanged();
        } else {
          serviceIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public Builder clearServiceId() {
        if (serviceIdBuilder_ == null) {
          serviceId_ = null;
          onChanged();
        } else {
          serviceId_ = null;
          serviceIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
        
        onChanged();
        return getServiceIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
        if (serviceIdBuilder_ != null) {
          return serviceIdBuilder_.getMessageOrBuilder();
        } else {
          return serviceId_ == null ?
              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }
      }
      /**
       * <code>.context.ServiceId service_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
          getServiceIdFieldBuilder() {
        if (serviceIdBuilder_ == null) {
          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
                  getServiceId(),
                  getParentForChildren(),
                  isClean());
          serviceId_ = null;
        }
        return serviceIdBuilder_;
      }

      private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_ =
        java.util.Collections.emptyList();
      private void ensurePathHopsEndpointIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(pathHopsEndpointIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> pathHopsEndpointIdsBuilder_;

      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList() {
        if (pathHopsEndpointIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
        } else {
          return pathHopsEndpointIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public int getPathHopsEndpointIdsCount() {
        if (pathHopsEndpointIdsBuilder_ == null) {
          return pathHopsEndpointIds_.size();
        } else {
          return pathHopsEndpointIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          return pathHopsEndpointIds_.get(index);
        } else {
          return pathHopsEndpointIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder setPathHopsEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePathHopsEndpointIdsIsMutable();
          pathHopsEndpointIds_.set(index, value);
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder setPathHopsEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          ensurePathHopsEndpointIdsIsMutable();
          pathHopsEndpointIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder addPathHopsEndpointIds(context.ContextOuterClass.EndPointId value) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePathHopsEndpointIdsIsMutable();
          pathHopsEndpointIds_.add(value);
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder addPathHopsEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePathHopsEndpointIdsIsMutable();
          pathHopsEndpointIds_.add(index, value);
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder addPathHopsEndpointIds(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          ensurePathHopsEndpointIdsIsMutable();
          pathHopsEndpointIds_.add(builderForValue.build());
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder addPathHopsEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          ensurePathHopsEndpointIdsIsMutable();
          pathHopsEndpointIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder addAllPathHopsEndpointIds(
          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          ensurePathHopsEndpointIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, pathHopsEndpointIds_);
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder clearPathHopsEndpointIds() {
        if (pathHopsEndpointIdsBuilder_ == null) {
          pathHopsEndpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public Builder removePathHopsEndpointIds(int index) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          ensurePathHopsEndpointIdsIsMutable();
          pathHopsEndpointIds_.remove(index);
          onChanged();
        } else {
          pathHopsEndpointIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getPathHopsEndpointIdsBuilder(
          int index) {
        return getPathHopsEndpointIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(
          int index) {
        if (pathHopsEndpointIdsBuilder_ == null) {
          return pathHopsEndpointIds_.get(index);  } else {
          return pathHopsEndpointIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
           getPathHopsEndpointIdsOrBuilderList() {
        if (pathHopsEndpointIdsBuilder_ != null) {
          return pathHopsEndpointIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
        }
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder() {
        return getPathHopsEndpointIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder(
          int index) {
        return getPathHopsEndpointIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
           getPathHopsEndpointIdsBuilderList() {
        return getPathHopsEndpointIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getPathHopsEndpointIdsFieldBuilder() {
        if (pathHopsEndpointIdsBuilder_ == null) {
          pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  pathHopsEndpointIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          pathHopsEndpointIds_ = null;
        }
        return pathHopsEndpointIdsBuilder_;
      }

      private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_ =
        java.util.Collections.emptyList();
      private void ensureSubServiceIdsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(subServiceIds_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> subServiceIdsBuilder_;

      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
        if (subServiceIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subServiceIds_);
        } else {
          return subServiceIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public int getSubServiceIdsCount() {
        if (subServiceIdsBuilder_ == null) {
          return subServiceIds_.size();
        } else {
          return subServiceIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
        if (subServiceIdsBuilder_ == null) {
          return subServiceIds_.get(index);
        } else {
          return subServiceIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder setSubServiceIds(
          int index, context.ContextOuterClass.ServiceId value) {
        if (subServiceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubServiceIdsIsMutable();
          subServiceIds_.set(index, value);
          onChanged();
        } else {
          subServiceIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder setSubServiceIds(
          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (subServiceIdsBuilder_ == null) {
          ensureSubServiceIdsIsMutable();
          subServiceIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          subServiceIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder addSubServiceIds(context.ContextOuterClass.ServiceId value) {
        if (subServiceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubServiceIdsIsMutable();
          subServiceIds_.add(value);
          onChanged();
        } else {
          subServiceIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder addSubServiceIds(
          int index, context.ContextOuterClass.ServiceId value) {
        if (subServiceIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubServiceIdsIsMutable();
          subServiceIds_.add(index, value);
          onChanged();
        } else {
          subServiceIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder addSubServiceIds(
          context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (subServiceIdsBuilder_ == null) {
          ensureSubServiceIdsIsMutable();
          subServiceIds_.add(builderForValue.build());
          onChanged();
        } else {
          subServiceIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder addSubServiceIds(
          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
        if (subServiceIdsBuilder_ == null) {
          ensureSubServiceIdsIsMutable();
          subServiceIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          subServiceIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder addAllSubServiceIds(
          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
        if (subServiceIdsBuilder_ == null) {
          ensureSubServiceIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, subServiceIds_);
          onChanged();
        } else {
          subServiceIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder clearSubServiceIds() {
        if (subServiceIdsBuilder_ == null) {
          subServiceIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          subServiceIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public Builder removeSubServiceIds(int index) {
        if (subServiceIdsBuilder_ == null) {
          ensureSubServiceIdsIsMutable();
          subServiceIds_.remove(index);
          onChanged();
        } else {
          subServiceIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder getSubServiceIdsBuilder(
          int index) {
        return getSubServiceIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
          int index) {
        if (subServiceIdsBuilder_ == null) {
          return subServiceIds_.get(index);  } else {
          return subServiceIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
           getSubServiceIdsOrBuilderList() {
        if (subServiceIdsBuilder_ != null) {
          return subServiceIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subServiceIds_);
        }
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder() {
        return getSubServiceIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.ServiceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder(
          int index) {
        return getSubServiceIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
       */
      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
           getSubServiceIdsBuilderList() {
        return getSubServiceIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
          getSubServiceIdsFieldBuilder() {
        if (subServiceIdsBuilder_ == null) {
          subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
                  subServiceIds_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          subServiceIds_ = null;
        }
        return subServiceIdsBuilder_;
      }

      private context.ContextOuterClass.ConnectionSettings settings_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> settingsBuilder_;
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       * @return Whether the settings field is set.
       */
      public boolean hasSettings() {
        return settingsBuilder_ != null || settings_ != null;
      }
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       * @return The settings.
       */
      public context.ContextOuterClass.ConnectionSettings getSettings() {
        if (settingsBuilder_ == null) {
          return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
        } else {
          return settingsBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       */
      public Builder setSettings(context.ContextOuterClass.ConnectionSettings value) {
        if (settingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          settings_ = value;
          onChanged();
        } else {
          settingsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       */
      public Builder setSettings(
          context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
        if (settingsBuilder_ == null) {
          settings_ = builderForValue.build();
          onChanged();
        } else {
          settingsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       */
      public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
        if (settingsBuilder_ == null) {
          if (settings_ != null) {
            settings_ =
              context.ContextOuterClass.ConnectionSettings.newBuilder(settings_).mergeFrom(value).buildPartial();
          } else {
            settings_ = value;
          }
          onChanged();
        } else {
          settingsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       */
      public Builder clearSettings() {
        if (settingsBuilder_ == null) {
          settings_ = null;
          onChanged();
        } else {
          settings_ = null;
          settingsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       */
      public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
        
        onChanged();
        return getSettingsFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       */
      public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
        if (settingsBuilder_ != null) {
          return settingsBuilder_.getMessageOrBuilder();
        } else {
          return settings_ == null ?
              context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
        }
      }
      /**
       * <code>.context.ConnectionSettings settings = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> 
          getSettingsFieldBuilder() {
        if (settingsBuilder_ == null) {
          settingsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder>(
                  getSettings(),
                  getParentForChildren(),
                  isClean());
          settings_ = null;
        }
        return settingsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Connection)
    }

    // @@protoc_insertion_point(class_scope:context.Connection)
    private static final context.ContextOuterClass.Connection DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Connection();
    }

    public static context.ContextOuterClass.Connection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Connection getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionIdListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionIdList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    java.util.List<context.ContextOuterClass.ConnectionId> 
        getConnectionIdsList();
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    context.ContextOuterClass.ConnectionId getConnectionIds(int index);
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    int getConnectionIdsCount();
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
        getConnectionIdsOrBuilderList();
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.ConnectionIdList}
   */
  public static final class ConnectionIdList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionIdList)
      ConnectionIdListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionIdList.newBuilder() to construct.
    private ConnectionIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionIdList() {
      connectionIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionIdList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionIdList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>();
                mutable_bitField0_ |= 0x00000001;
              }
              connectionIds_.add(
                  input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
    }

    public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_;
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
      return connectionIds_;
    }
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
        getConnectionIdsOrBuilderList() {
      return connectionIds_;
    }
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    @java.lang.Override
    public int getConnectionIdsCount() {
      return connectionIds_.size();
    }
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
      return connectionIds_.get(index);
    }
    /**
     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
        int index) {
      return connectionIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < connectionIds_.size(); i++) {
        output.writeMessage(1, connectionIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < connectionIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, connectionIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionIdList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;

      if (!getConnectionIdsList()
          .equals(other.getConnectionIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ConnectionIdList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionIdList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionIdList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionIdList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionIdList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionIdList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionIdList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionIdList 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 context.ContextOuterClass.ConnectionIdList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionIdList 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 context.ContextOuterClass.ConnectionIdList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionIdList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionIdList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConnectionIdList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionIdList)
        context.ContextOuterClass.ConnectionIdListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getConnectionIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (connectionIdsBuilder_ == null) {
          connectionIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          connectionIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionIdList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionIdList build() {
        context.ContextOuterClass.ConnectionIdList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionIdList buildPartial() {
        context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
        int from_bitField0_ = bitField0_;
        if (connectionIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.connectionIds_ = connectionIds_;
        } else {
          result.connectionIds_ = connectionIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionIdList) {
          return mergeFrom((context.ContextOuterClass.ConnectionIdList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionIdList other) {
        if (other == context.ContextOuterClass.ConnectionIdList.getDefaultInstance()) return this;
        if (connectionIdsBuilder_ == null) {
          if (!other.connectionIds_.isEmpty()) {
            if (connectionIds_.isEmpty()) {
              connectionIds_ = other.connectionIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConnectionIdsIsMutable();
              connectionIds_.addAll(other.connectionIds_);
            }
            onChanged();
          }
        } else {
          if (!other.connectionIds_.isEmpty()) {
            if (connectionIdsBuilder_.isEmpty()) {
              connectionIdsBuilder_.dispose();
              connectionIdsBuilder_ = null;
              connectionIds_ = other.connectionIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              connectionIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConnectionIdsFieldBuilder() : null;
            } else {
              connectionIdsBuilder_.addAllMessages(other.connectionIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionIdList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionIdList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_ =
        java.util.Collections.emptyList();
      private void ensureConnectionIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>(connectionIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdsBuilder_;

      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
        if (connectionIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(connectionIds_);
        } else {
          return connectionIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public int getConnectionIdsCount() {
        if (connectionIdsBuilder_ == null) {
          return connectionIds_.size();
        } else {
          return connectionIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
        if (connectionIdsBuilder_ == null) {
          return connectionIds_.get(index);
        } else {
          return connectionIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder setConnectionIds(
          int index, context.ContextOuterClass.ConnectionId value) {
        if (connectionIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConnectionIdsIsMutable();
          connectionIds_.set(index, value);
          onChanged();
        } else {
          connectionIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder setConnectionIds(
          int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
        if (connectionIdsBuilder_ == null) {
          ensureConnectionIdsIsMutable();
          connectionIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          connectionIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder addConnectionIds(context.ContextOuterClass.ConnectionId value) {
        if (connectionIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConnectionIdsIsMutable();
          connectionIds_.add(value);
          onChanged();
        } else {
          connectionIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder addConnectionIds(
          int index, context.ContextOuterClass.ConnectionId value) {
        if (connectionIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConnectionIdsIsMutable();
          connectionIds_.add(index, value);
          onChanged();
        } else {
          connectionIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder addConnectionIds(
          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
        if (connectionIdsBuilder_ == null) {
          ensureConnectionIdsIsMutable();
          connectionIds_.add(builderForValue.build());
          onChanged();
        } else {
          connectionIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder addConnectionIds(
          int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
        if (connectionIdsBuilder_ == null) {
          ensureConnectionIdsIsMutable();
          connectionIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          connectionIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder addAllConnectionIds(
          java.lang.Iterable<? extends context.ContextOuterClass.ConnectionId> values) {
        if (connectionIdsBuilder_ == null) {
          ensureConnectionIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, connectionIds_);
          onChanged();
        } else {
          connectionIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder clearConnectionIds() {
        if (connectionIdsBuilder_ == null) {
          connectionIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          connectionIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public Builder removeConnectionIds(int index) {
        if (connectionIdsBuilder_ == null) {
          ensureConnectionIdsIsMutable();
          connectionIds_.remove(index);
          onChanged();
        } else {
          connectionIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdsBuilder(
          int index) {
        return getConnectionIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
          int index) {
        if (connectionIdsBuilder_ == null) {
          return connectionIds_.get(index);  } else {
          return connectionIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
           getConnectionIdsOrBuilderList() {
        if (connectionIdsBuilder_ != null) {
          return connectionIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(connectionIds_);
        }
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder() {
        return getConnectionIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.ConnectionId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder(
          int index) {
        return getConnectionIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.ConnectionId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.ConnectionId.Builder> 
           getConnectionIdsBuilderList() {
        return getConnectionIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> 
          getConnectionIdsFieldBuilder() {
        if (connectionIdsBuilder_ == null) {
          connectionIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(
                  connectionIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          connectionIds_ = null;
        }
        return connectionIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionIdList)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionIdList)
    private static final context.ContextOuterClass.ConnectionIdList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionIdList();
    }

    public static context.ContextOuterClass.ConnectionIdList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    java.util.List<context.ContextOuterClass.Connection> 
        getConnectionsList();
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    context.ContextOuterClass.Connection getConnections(int index);
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    int getConnectionsCount();
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
        getConnectionsOrBuilderList();
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.ConnectionList}
   */
  public static final class ConnectionList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionList)
      ConnectionListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionList.newBuilder() to construct.
    private ConnectionList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionList() {
      connections_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>();
                mutable_bitField0_ |= 0x00000001;
              }
              connections_.add(
                  input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          connections_ = java.util.Collections.unmodifiableList(connections_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
    }

    public static final int CONNECTIONS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.Connection> connections_;
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
      return connections_;
    }
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
        getConnectionsOrBuilderList() {
      return connections_;
    }
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    @java.lang.Override
    public int getConnectionsCount() {
      return connections_.size();
    }
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Connection getConnections(int index) {
      return connections_.get(index);
    }
    /**
     * <code>repeated .context.Connection connections = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
        int index) {
      return connections_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < connections_.size(); i++) {
        output.writeMessage(1, connections_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < connections_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, connections_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;

      if (!getConnectionsList()
          .equals(other.getConnectionsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ConnectionList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionList 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 context.ContextOuterClass.ConnectionList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionList 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 context.ContextOuterClass.ConnectionList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConnectionList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionList)
        context.ContextOuterClass.ConnectionListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getConnectionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (connectionsBuilder_ == null) {
          connections_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          connectionsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionList build() {
        context.ContextOuterClass.ConnectionList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionList buildPartial() {
        context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
        int from_bitField0_ = bitField0_;
        if (connectionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            connections_ = java.util.Collections.unmodifiableList(connections_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.connections_ = connections_;
        } else {
          result.connections_ = connectionsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionList) {
          return mergeFrom((context.ContextOuterClass.ConnectionList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionList other) {
        if (other == context.ContextOuterClass.ConnectionList.getDefaultInstance()) return this;
        if (connectionsBuilder_ == null) {
          if (!other.connections_.isEmpty()) {
            if (connections_.isEmpty()) {
              connections_ = other.connections_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConnectionsIsMutable();
              connections_.addAll(other.connections_);
            }
            onChanged();
          }
        } else {
          if (!other.connections_.isEmpty()) {
            if (connectionsBuilder_.isEmpty()) {
              connectionsBuilder_.dispose();
              connectionsBuilder_ = null;
              connections_ = other.connections_;
              bitField0_ = (bitField0_ & ~0x00000001);
              connectionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConnectionsFieldBuilder() : null;
            } else {
              connectionsBuilder_.addAllMessages(other.connections_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.Connection> connections_ =
        java.util.Collections.emptyList();
      private void ensureConnectionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>(connections_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> connectionsBuilder_;

      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
        if (connectionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(connections_);
        } else {
          return connectionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public int getConnectionsCount() {
        if (connectionsBuilder_ == null) {
          return connections_.size();
        } else {
          return connectionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public context.ContextOuterClass.Connection getConnections(int index) {
        if (connectionsBuilder_ == null) {
          return connections_.get(index);
        } else {
          return connectionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder setConnections(
          int index, context.ContextOuterClass.Connection value) {
        if (connectionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConnectionsIsMutable();
          connections_.set(index, value);
          onChanged();
        } else {
          connectionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder setConnections(
          int index, context.ContextOuterClass.Connection.Builder builderForValue) {
        if (connectionsBuilder_ == null) {
          ensureConnectionsIsMutable();
          connections_.set(index, builderForValue.build());
          onChanged();
        } else {
          connectionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder addConnections(context.ContextOuterClass.Connection value) {
        if (connectionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConnectionsIsMutable();
          connections_.add(value);
          onChanged();
        } else {
          connectionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder addConnections(
          int index, context.ContextOuterClass.Connection value) {
        if (connectionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConnectionsIsMutable();
          connections_.add(index, value);
          onChanged();
        } else {
          connectionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder addConnections(
          context.ContextOuterClass.Connection.Builder builderForValue) {
        if (connectionsBuilder_ == null) {
          ensureConnectionsIsMutable();
          connections_.add(builderForValue.build());
          onChanged();
        } else {
          connectionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder addConnections(
          int index, context.ContextOuterClass.Connection.Builder builderForValue) {
        if (connectionsBuilder_ == null) {
          ensureConnectionsIsMutable();
          connections_.add(index, builderForValue.build());
          onChanged();
        } else {
          connectionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder addAllConnections(
          java.lang.Iterable<? extends context.ContextOuterClass.Connection> values) {
        if (connectionsBuilder_ == null) {
          ensureConnectionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, connections_);
          onChanged();
        } else {
          connectionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder clearConnections() {
        if (connectionsBuilder_ == null) {
          connections_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          connectionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public Builder removeConnections(int index) {
        if (connectionsBuilder_ == null) {
          ensureConnectionsIsMutable();
          connections_.remove(index);
          onChanged();
        } else {
          connectionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public context.ContextOuterClass.Connection.Builder getConnectionsBuilder(
          int index) {
        return getConnectionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
          int index) {
        if (connectionsBuilder_ == null) {
          return connections_.get(index);  } else {
          return connectionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
           getConnectionsOrBuilderList() {
        if (connectionsBuilder_ != null) {
          return connectionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(connections_);
        }
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public context.ContextOuterClass.Connection.Builder addConnectionsBuilder() {
        return getConnectionsFieldBuilder().addBuilder(
            context.ContextOuterClass.Connection.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public context.ContextOuterClass.Connection.Builder addConnectionsBuilder(
          int index) {
        return getConnectionsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.Connection.getDefaultInstance());
      }
      /**
       * <code>repeated .context.Connection connections = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.Connection.Builder> 
           getConnectionsBuilderList() {
        return getConnectionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> 
          getConnectionsFieldBuilder() {
        if (connectionsBuilder_ == null) {
          connectionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder>(
                  connections_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          connections_ = null;
        }
        return connectionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionList)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionList)
    private static final context.ContextOuterClass.ConnectionList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionList();
    }

    public static context.ContextOuterClass.ConnectionList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConnectionEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConnectionEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    boolean hasEvent();
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    context.ContextOuterClass.Event getEvent();
    /**
     * <code>.context.Event event = 1;</code>
     */
    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

    /**
     * <code>.context.ConnectionId connection_id = 2;</code>
     * @return Whether the connectionId field is set.
     */
    boolean hasConnectionId();
    /**
     * <code>.context.ConnectionId connection_id = 2;</code>
     * @return The connectionId.
     */
    context.ContextOuterClass.ConnectionId getConnectionId();
    /**
     * <code>.context.ConnectionId connection_id = 2;</code>
     */
    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
  }
  /**
   * Protobuf type {@code context.ConnectionEvent}
   */
  public static final class ConnectionEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConnectionEvent)
      ConnectionEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionEvent.newBuilder() to construct.
    private ConnectionEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConnectionEvent() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Event.Builder subBuilder = null;
              if (event_ != null) {
                subBuilder = event_.toBuilder();
              }
              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(event_);
                event_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
              if (connectionId_ != null) {
                subBuilder = connectionId_.toBuilder();
              }
              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(connectionId_);
                connectionId_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
    }

    public static final int EVENT_FIELD_NUMBER = 1;
    private context.ContextOuterClass.Event event_;
    /**
     * <code>.context.Event event = 1;</code>
     * @return Whether the event field is set.
     */
    @java.lang.Override
    public boolean hasEvent() {
      return event_ != null;
    }
    /**
     * <code>.context.Event event = 1;</code>
     * @return The event.
     */
    @java.lang.Override
    public context.ContextOuterClass.Event getEvent() {
      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
    }
    /**
     * <code>.context.Event event = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
      return getEvent();
    }

    public static final int CONNECTION_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.ConnectionId connectionId_;
    /**
     * <code>.context.ConnectionId connection_id = 2;</code>
     * @return Whether the connectionId field is set.
     */
    @java.lang.Override
    public boolean hasConnectionId() {
      return connectionId_ != null;
    }
    /**
     * <code>.context.ConnectionId connection_id = 2;</code>
     * @return The connectionId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionId getConnectionId() {
      return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
    }
    /**
     * <code>.context.ConnectionId connection_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
      return getConnectionId();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (event_ != null) {
        output.writeMessage(1, getEvent());
      }
      if (connectionId_ != null) {
        output.writeMessage(2, getConnectionId());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (event_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEvent());
      }
      if (connectionId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getConnectionId());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConnectionEvent)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConnectionEvent other = (context.ContextOuterClass.ConnectionEvent) obj;

      if (hasEvent() != other.hasEvent()) return false;
      if (hasEvent()) {
        if (!getEvent()
            .equals(other.getEvent())) return false;
      }
      if (hasConnectionId() != other.hasConnectionId()) return false;
      if (hasConnectionId()) {
        if (!getConnectionId()
            .equals(other.getConnectionId())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEvent()) {
        hash = (37 * hash) + EVENT_FIELD_NUMBER;
        hash = (53 * hash) + getEvent().hashCode();
      }
      if (hasConnectionId()) {
        hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
        hash = (53 * hash) + getConnectionId().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ConnectionEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConnectionEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConnectionEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionEvent 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 context.ContextOuterClass.ConnectionEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionEvent 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 context.ContextOuterClass.ConnectionEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConnectionEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConnectionEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConnectionEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConnectionEvent)
        context.ContextOuterClass.ConnectionEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (eventBuilder_ == null) {
          event_ = null;
        } else {
          event_ = null;
          eventBuilder_ = null;
        }
        if (connectionIdBuilder_ == null) {
          connectionId_ = null;
        } else {
          connectionId_ = null;
          connectionIdBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
        return context.ContextOuterClass.ConnectionEvent.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionEvent build() {
        context.ContextOuterClass.ConnectionEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConnectionEvent buildPartial() {
        context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
        if (eventBuilder_ == null) {
          result.event_ = event_;
        } else {
          result.event_ = eventBuilder_.build();
        }
        if (connectionIdBuilder_ == null) {
          result.connectionId_ = connectionId_;
        } else {
          result.connectionId_ = connectionIdBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConnectionEvent) {
          return mergeFrom((context.ContextOuterClass.ConnectionEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConnectionEvent other) {
        if (other == context.ContextOuterClass.ConnectionEvent.getDefaultInstance()) return this;
        if (other.hasEvent()) {
          mergeEvent(other.getEvent());
        }
        if (other.hasConnectionId()) {
          mergeConnectionId(other.getConnectionId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConnectionEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConnectionEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.Event event_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
      /**
       * <code>.context.Event event = 1;</code>
       * @return Whether the event field is set.
       */
      public boolean hasEvent() {
        return eventBuilder_ != null || event_ != null;
      }
      /**
       * <code>.context.Event event = 1;</code>
       * @return The event.
       */
      public context.ContextOuterClass.Event getEvent() {
        if (eventBuilder_ == null) {
          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        } else {
          return eventBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          eventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder setEvent(
          context.ContextOuterClass.Event.Builder builderForValue) {
        if (eventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          eventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder mergeEvent(context.ContextOuterClass.Event value) {
        if (eventBuilder_ == null) {
          if (event_ != null) {
            event_ =
              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          eventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public Builder clearEvent() {
        if (eventBuilder_ == null) {
          event_ = null;
          onChanged();
        } else {
          event_ = null;
          eventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.Event.Builder getEventBuilder() {
        
        onChanged();
        return getEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
        if (eventBuilder_ != null) {
          return eventBuilder_.getMessageOrBuilder();
        } else {
          return event_ == null ?
              context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }
      }
      /**
       * <code>.context.Event event = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
          getEventFieldBuilder() {
        if (eventBuilder_ == null) {
          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
                  getEvent(),
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        return eventBuilder_;
      }

      private context.ContextOuterClass.ConnectionId connectionId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       * @return Whether the connectionId field is set.
       */
      public boolean hasConnectionId() {
        return connectionIdBuilder_ != null || connectionId_ != null;
      }
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       * @return The connectionId.
       */
      public context.ContextOuterClass.ConnectionId getConnectionId() {
        if (connectionIdBuilder_ == null) {
          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
        } else {
          return connectionIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       */
      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
        if (connectionIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connectionId_ = value;
          onChanged();
        } else {
          connectionIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       */
      public Builder setConnectionId(
          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
        if (connectionIdBuilder_ == null) {
          connectionId_ = builderForValue.build();
          onChanged();
        } else {
          connectionIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       */
      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
        if (connectionIdBuilder_ == null) {
          if (connectionId_ != null) {
            connectionId_ =
              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
          } else {
            connectionId_ = value;
          }
          onChanged();
        } else {
          connectionIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       */
      public Builder clearConnectionId() {
        if (connectionIdBuilder_ == null) {
          connectionId_ = null;
          onChanged();
        } else {
          connectionId_ = null;
          connectionIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       */
      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
        
        onChanged();
        return getConnectionIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       */
      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
        if (connectionIdBuilder_ != null) {
          return connectionIdBuilder_.getMessageOrBuilder();
        } else {
          return connectionId_ == null ?
              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
        }
      }
      /**
       * <code>.context.ConnectionId connection_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> 
          getConnectionIdFieldBuilder() {
        if (connectionIdBuilder_ == null) {
          connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(
                  getConnectionId(),
                  getParentForChildren(),
                  isClean());
          connectionId_ = null;
        }
        return connectionIdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConnectionEvent)
    }

    // @@protoc_insertion_point(class_scope:context.ConnectionEvent)
    private static final context.ContextOuterClass.ConnectionEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionEvent();
    }

    public static context.ContextOuterClass.ConnectionEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EndPointIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.EndPointId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return Whether the topologyId field is set.
     */
    boolean hasTopologyId();
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return The topologyId.
     */
    context.ContextOuterClass.TopologyId getTopologyId();
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     */
    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();

    /**
     * <code>.context.DeviceId device_id = 2;</code>
     * @return Whether the deviceId field is set.
     */
    boolean hasDeviceId();
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     * @return The deviceId.
     */
    context.ContextOuterClass.DeviceId getDeviceId();
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     */
    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();

    /**
     * <code>.context.Uuid endpoint_uuid = 3;</code>
     * @return Whether the endpointUuid field is set.
     */
    boolean hasEndpointUuid();
    /**
     * <code>.context.Uuid endpoint_uuid = 3;</code>
     * @return The endpointUuid.
     */
    context.ContextOuterClass.Uuid getEndpointUuid();
    /**
     * <code>.context.Uuid endpoint_uuid = 3;</code>
     */
    context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder();
  }
  /**
   * <pre>
   * ----- Endpoint ------------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.EndPointId}
   */
  public static final class EndPointId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.EndPointId)
      EndPointIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EndPointId.newBuilder() to construct.
    private EndPointId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EndPointId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EndPointId();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EndPointId(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
              if (topologyId_ != null) {
                subBuilder = topologyId_.toBuilder();
              }
              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(topologyId_);
                topologyId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
              if (deviceId_ != null) {
                subBuilder = deviceId_.toBuilder();
              }
              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceId_);
                deviceId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              context.ContextOuterClass.Uuid.Builder subBuilder = null;
              if (endpointUuid_ != null) {
                subBuilder = endpointUuid_.toBuilder();
              }
              endpointUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endpointUuid_);
                endpointUuid_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
    }

    public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.TopologyId topologyId_;
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return Whether the topologyId field is set.
     */
    @java.lang.Override
    public boolean hasTopologyId() {
      return topologyId_ != null;
    }
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     * @return The topologyId.
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyId getTopologyId() {
      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
    }
    /**
     * <code>.context.TopologyId topology_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
      return getTopologyId();
    }

    public static final int DEVICE_ID_FIELD_NUMBER = 2;
    private context.ContextOuterClass.DeviceId deviceId_;
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     * @return Whether the deviceId field is set.
     */
    @java.lang.Override
    public boolean hasDeviceId() {
      return deviceId_ != null;
    }
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     * @return The deviceId.
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceId getDeviceId() {
      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
    }
    /**
     * <code>.context.DeviceId device_id = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
      return getDeviceId();
    }

    public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;
    private context.ContextOuterClass.Uuid endpointUuid_;
    /**
     * <code>.context.Uuid endpoint_uuid = 3;</code>
     * @return Whether the endpointUuid field is set.
     */
    @java.lang.Override
    public boolean hasEndpointUuid() {
      return endpointUuid_ != null;
    }
    /**
     * <code>.context.Uuid endpoint_uuid = 3;</code>
     * @return The endpointUuid.
     */
    @java.lang.Override
    public context.ContextOuterClass.Uuid getEndpointUuid() {
      return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
    }
    /**
     * <code>.context.Uuid endpoint_uuid = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
      return getEndpointUuid();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (topologyId_ != null) {
        output.writeMessage(1, getTopologyId());
      }
      if (deviceId_ != null) {
        output.writeMessage(2, getDeviceId());
      }
      if (endpointUuid_ != null) {
        output.writeMessage(3, getEndpointUuid());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (topologyId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTopologyId());
      }
      if (deviceId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDeviceId());
      }
      if (endpointUuid_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getEndpointUuid());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.EndPointId)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.EndPointId other = (context.ContextOuterClass.EndPointId) obj;

      if (hasTopologyId() != other.hasTopologyId()) return false;
      if (hasTopologyId()) {
        if (!getTopologyId()
            .equals(other.getTopologyId())) return false;
      }
      if (hasDeviceId() != other.hasDeviceId()) return false;
      if (hasDeviceId()) {
        if (!getDeviceId()
            .equals(other.getDeviceId())) return false;
      }
      if (hasEndpointUuid() != other.hasEndpointUuid()) return false;
      if (hasEndpointUuid()) {
        if (!getEndpointUuid()
            .equals(other.getEndpointUuid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTopologyId()) {
        hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTopologyId().hashCode();
      }
      if (hasDeviceId()) {
        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceId().hashCode();
      }
      if (hasEndpointUuid()) {
        hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointUuid().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.EndPointId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointId 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 context.ContextOuterClass.EndPointId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointId 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 context.ContextOuterClass.EndPointId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.EndPointId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Endpoint ------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.EndPointId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.EndPointId)
        context.ContextOuterClass.EndPointIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
      }

      // Construct using context.ContextOuterClass.EndPointId.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (topologyIdBuilder_ == null) {
          topologyId_ = null;
        } else {
          topologyId_ = null;
          topologyIdBuilder_ = null;
        }
        if (deviceIdBuilder_ == null) {
          deviceId_ = null;
        } else {
          deviceId_ = null;
          deviceIdBuilder_ = null;
        }
        if (endpointUuidBuilder_ == null) {
          endpointUuid_ = null;
        } else {
          endpointUuid_ = null;
          endpointUuidBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
        return context.ContextOuterClass.EndPointId.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointId build() {
        context.ContextOuterClass.EndPointId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointId buildPartial() {
        context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
        if (topologyIdBuilder_ == null) {
          result.topologyId_ = topologyId_;
        } else {
          result.topologyId_ = topologyIdBuilder_.build();
        }
        if (deviceIdBuilder_ == null) {
          result.deviceId_ = deviceId_;
        } else {
          result.deviceId_ = deviceIdBuilder_.build();
        }
        if (endpointUuidBuilder_ == null) {
          result.endpointUuid_ = endpointUuid_;
        } else {
          result.endpointUuid_ = endpointUuidBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.EndPointId) {
          return mergeFrom((context.ContextOuterClass.EndPointId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.EndPointId other) {
        if (other == context.ContextOuterClass.EndPointId.getDefaultInstance()) return this;
        if (other.hasTopologyId()) {
          mergeTopologyId(other.getTopologyId());
        }
        if (other.hasDeviceId()) {
          mergeDeviceId(other.getDeviceId());
        }
        if (other.hasEndpointUuid()) {
          mergeEndpointUuid(other.getEndpointUuid());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.EndPointId parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.EndPointId) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.TopologyId topologyId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       * @return Whether the topologyId field is set.
       */
      public boolean hasTopologyId() {
        return topologyIdBuilder_ != null || topologyId_ != null;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       * @return The topologyId.
       */
      public context.ContextOuterClass.TopologyId getTopologyId() {
        if (topologyIdBuilder_ == null) {
          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        } else {
          return topologyIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
        if (topologyIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          topologyId_ = value;
          onChanged();
        } else {
          topologyIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder setTopologyId(
          context.ContextOuterClass.TopologyId.Builder builderForValue) {
        if (topologyIdBuilder_ == null) {
          topologyId_ = builderForValue.build();
          onChanged();
        } else {
          topologyIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
        if (topologyIdBuilder_ == null) {
          if (topologyId_ != null) {
            topologyId_ =
              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
          } else {
            topologyId_ = value;
          }
          onChanged();
        } else {
          topologyIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public Builder clearTopologyId() {
        if (topologyIdBuilder_ == null) {
          topologyId_ = null;
          onChanged();
        } else {
          topologyId_ = null;
          topologyIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
        
        onChanged();
        return getTopologyIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
        if (topologyIdBuilder_ != null) {
          return topologyIdBuilder_.getMessageOrBuilder();
        } else {
          return topologyId_ == null ?
              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }
      }
      /**
       * <code>.context.TopologyId topology_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
          getTopologyIdFieldBuilder() {
        if (topologyIdBuilder_ == null) {
          topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
                  getTopologyId(),
                  getParentForChildren(),
                  isClean());
          topologyId_ = null;
        }
        return topologyIdBuilder_;
      }

      private context.ContextOuterClass.DeviceId deviceId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       * @return Whether the deviceId field is set.
       */
      public boolean hasDeviceId() {
        return deviceIdBuilder_ != null || deviceId_ != null;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       * @return The deviceId.
       */
      public context.ContextOuterClass.DeviceId getDeviceId() {
        if (deviceIdBuilder_ == null) {
          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        } else {
          return deviceIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
        if (deviceIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceId_ = value;
          onChanged();
        } else {
          deviceIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public Builder setDeviceId(
          context.ContextOuterClass.DeviceId.Builder builderForValue) {
        if (deviceIdBuilder_ == null) {
          deviceId_ = builderForValue.build();
          onChanged();
        } else {
          deviceIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
        if (deviceIdBuilder_ == null) {
          if (deviceId_ != null) {
            deviceId_ =
              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
          } else {
            deviceId_ = value;
          }
          onChanged();
        } else {
          deviceIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public Builder clearDeviceId() {
        if (deviceIdBuilder_ == null) {
          deviceId_ = null;
          onChanged();
        } else {
          deviceId_ = null;
          deviceIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
        
        onChanged();
        return getDeviceIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
        if (deviceIdBuilder_ != null) {
          return deviceIdBuilder_.getMessageOrBuilder();
        } else {
          return deviceId_ == null ?
              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }
      }
      /**
       * <code>.context.DeviceId device_id = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
          getDeviceIdFieldBuilder() {
        if (deviceIdBuilder_ == null) {
          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
                  getDeviceId(),
                  getParentForChildren(),
                  isClean());
          deviceId_ = null;
        }
        return deviceIdBuilder_;
      }

      private context.ContextOuterClass.Uuid endpointUuid_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> endpointUuidBuilder_;
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       * @return Whether the endpointUuid field is set.
       */
      public boolean hasEndpointUuid() {
        return endpointUuidBuilder_ != null || endpointUuid_ != null;
      }
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       * @return The endpointUuid.
       */
      public context.ContextOuterClass.Uuid getEndpointUuid() {
        if (endpointUuidBuilder_ == null) {
          return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
        } else {
          return endpointUuidBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       */
      public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) {
        if (endpointUuidBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endpointUuid_ = value;
          onChanged();
        } else {
          endpointUuidBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       */
      public Builder setEndpointUuid(
          context.ContextOuterClass.Uuid.Builder builderForValue) {
        if (endpointUuidBuilder_ == null) {
          endpointUuid_ = builderForValue.build();
          onChanged();
        } else {
          endpointUuidBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       */
      public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
        if (endpointUuidBuilder_ == null) {
          if (endpointUuid_ != null) {
            endpointUuid_ =
              context.ContextOuterClass.Uuid.newBuilder(endpointUuid_).mergeFrom(value).buildPartial();
          } else {
            endpointUuid_ = value;
          }
          onChanged();
        } else {
          endpointUuidBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       */
      public Builder clearEndpointUuid() {
        if (endpointUuidBuilder_ == null) {
          endpointUuid_ = null;
          onChanged();
        } else {
          endpointUuid_ = null;
          endpointUuidBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       */
      public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
        
        onChanged();
        return getEndpointUuidFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       */
      public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
        if (endpointUuidBuilder_ != null) {
          return endpointUuidBuilder_.getMessageOrBuilder();
        } else {
          return endpointUuid_ == null ?
              context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
        }
      }
      /**
       * <code>.context.Uuid endpoint_uuid = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
          getEndpointUuidFieldBuilder() {
        if (endpointUuidBuilder_ == null) {
          endpointUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
                  getEndpointUuid(),
                  getParentForChildren(),
                  isClean());
          endpointUuid_ = null;
        }
        return endpointUuidBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.EndPointId)
    }

    // @@protoc_insertion_point(class_scope:context.EndPointId)
    private static final context.ContextOuterClass.EndPointId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointId();
    }

    public static context.ContextOuterClass.EndPointId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EndPointOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.EndPoint)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    boolean hasEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    context.ContextOuterClass.EndPointId getEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>string endpoint_type = 3;</code>
     * @return The endpointType.
     */
    java.lang.String getEndpointType();
    /**
     * <code>string endpoint_type = 3;</code>
     * @return The bytes for endpointType.
     */
    com.google.protobuf.ByteString
        getEndpointTypeBytes();

    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @return A list containing the kpiSampleTypes.
     */
    java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList();
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @return The count of kpiSampleTypes.
     */
    int getKpiSampleTypesCount();
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @param index The index of the element to return.
     * @return The kpiSampleTypes at the given index.
     */
    kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index);
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
     */
    java.util.List<java.lang.Integer>
    getKpiSampleTypesValueList();
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
     */
    int getKpiSampleTypesValue(int index);

    /**
     * <code>.context.Location endpoint_location = 5;</code>
     * @return Whether the endpointLocation field is set.
     */
    boolean hasEndpointLocation();
    /**
     * <code>.context.Location endpoint_location = 5;</code>
     * @return The endpointLocation.
     */
    context.ContextOuterClass.Location getEndpointLocation();
    /**
     * <code>.context.Location endpoint_location = 5;</code>
     */
    context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder();
  }
  /**
   * Protobuf type {@code context.EndPoint}
   */
  public static final class EndPoint extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.EndPoint)
      EndPointOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EndPoint.newBuilder() to construct.
    private EndPoint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EndPoint() {
      name_ = "";
      endpointType_ = "";
      kpiSampleTypes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EndPoint();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EndPoint(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
              if (endpointId_ != null) {
                subBuilder = endpointId_.toBuilder();
              }
              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endpointId_);
                endpointId_ = subBuilder.buildPartial();
              }

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

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

              endpointType_ = s;
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              kpiSampleTypes_.add(rawValue);
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000001;
                }
                kpiSampleTypes_.add(rawValue);
              }
              input.popLimit(oldLimit);
              break;
            }
            case 42: {
              context.ContextOuterClass.Location.Builder subBuilder = null;
              if (endpointLocation_ != null) {
                subBuilder = endpointLocation_.toBuilder();
              }
              endpointLocation_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endpointLocation_);
                endpointLocation_ = subBuilder.buildPartial();
              }

              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
    }

    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.EndPointId endpointId_;
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    @java.lang.Override
    public boolean hasEndpointId() {
      return endpointId_ != null;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getEndpointId() {
      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
      return getEndpointId();
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENDPOINT_TYPE_FIELD_NUMBER = 3;
    private volatile java.lang.Object endpointType_;
    /**
     * <code>string endpoint_type = 3;</code>
     * @return The endpointType.
     */
    @java.lang.Override
    public java.lang.String getEndpointType() {
      java.lang.Object ref = endpointType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        endpointType_ = s;
        return s;
      }
    }
    /**
     * <code>string endpoint_type = 3;</code>
     * @return The bytes for endpointType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEndpointTypeBytes() {
      java.lang.Object ref = endpointType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        endpointType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;
    private java.util.List<java.lang.Integer> kpiSampleTypes_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType> kpiSampleTypes_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>() {
              public kpi_sample_types.KpiSampleTypes.KpiSampleType convert(java.lang.Integer from) {
                @SuppressWarnings("deprecation")
                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(from);
                return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
              }
            };
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @return A list containing the kpiSampleTypes.
     */
    @java.lang.Override
    public java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>(kpiSampleTypes_, kpiSampleTypes_converter_);
    }
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @return The count of kpiSampleTypes.
     */
    @java.lang.Override
    public int getKpiSampleTypesCount() {
      return kpiSampleTypes_.size();
    }
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @param index The index of the element to return.
     * @return The kpiSampleTypes at the given index.
     */
    @java.lang.Override
    public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
      return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
    }
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
    getKpiSampleTypesValueList() {
      return kpiSampleTypes_;
    }
    /**
     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
     */
    @java.lang.Override
    public int getKpiSampleTypesValue(int index) {
      return kpiSampleTypes_.get(index);
    }
    private int kpiSampleTypesMemoizedSerializedSize;

    public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 5;
    private context.ContextOuterClass.Location endpointLocation_;
    /**
     * <code>.context.Location endpoint_location = 5;</code>
     * @return Whether the endpointLocation field is set.
     */
    @java.lang.Override
    public boolean hasEndpointLocation() {
      return endpointLocation_ != null;
    }
    /**
     * <code>.context.Location endpoint_location = 5;</code>
     * @return The endpointLocation.
     */
    @java.lang.Override
    public context.ContextOuterClass.Location getEndpointLocation() {
      return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
    }
    /**
     * <code>.context.Location endpoint_location = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
      return getEndpointLocation();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (endpointId_ != null) {
        output.writeMessage(1, getEndpointId());
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!getEndpointTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointType_);
      }
      if (getKpiSampleTypesList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(kpiSampleTypesMemoizedSerializedSize);
      }
      for (int i = 0; i < kpiSampleTypes_.size(); i++) {
        output.writeEnumNoTag(kpiSampleTypes_.get(i));
      }
      if (endpointLocation_ != null) {
        output.writeMessage(5, getEndpointLocation());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (endpointId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEndpointId());
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!getEndpointTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointType_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < kpiSampleTypes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(kpiSampleTypes_.get(i));
        }
        size += dataSize;
        if (!getKpiSampleTypesList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }kpiSampleTypesMemoizedSerializedSize = dataSize;
      }
      if (endpointLocation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getEndpointLocation());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.EndPoint)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.EndPoint other = (context.ContextOuterClass.EndPoint) obj;

      if (hasEndpointId() != other.hasEndpointId()) return false;
      if (hasEndpointId()) {
        if (!getEndpointId()
            .equals(other.getEndpointId())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (!getEndpointType()
          .equals(other.getEndpointType())) return false;
      if (!kpiSampleTypes_.equals(other.kpiSampleTypes_)) return false;
      if (hasEndpointLocation() != other.hasEndpointLocation()) return false;
      if (hasEndpointLocation()) {
        if (!getEndpointLocation()
            .equals(other.getEndpointLocation())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEndpointId()) {
        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointId().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getEndpointType().hashCode();
      if (getKpiSampleTypesCount() > 0) {
        hash = (37 * hash) + KPI_SAMPLE_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + kpiSampleTypes_.hashCode();
      }
      if (hasEndpointLocation()) {
        hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointLocation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.EndPoint parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPoint parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPoint parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPoint parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPoint parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPoint parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPoint parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPoint 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 context.ContextOuterClass.EndPoint parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPoint 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 context.ContextOuterClass.EndPoint parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPoint parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.EndPoint prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.EndPoint}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.EndPoint)
        context.ContextOuterClass.EndPointOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
      }

      // Construct using context.ContextOuterClass.EndPoint.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }
        name_ = "";

        endpointType_ = "";

        kpiSampleTypes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        if (endpointLocationBuilder_ == null) {
          endpointLocation_ = null;
        } else {
          endpointLocation_ = null;
          endpointLocationBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
        return context.ContextOuterClass.EndPoint.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPoint build() {
        context.ContextOuterClass.EndPoint result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPoint buildPartial() {
        context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
        int from_bitField0_ = bitField0_;
        if (endpointIdBuilder_ == null) {
          result.endpointId_ = endpointId_;
        } else {
          result.endpointId_ = endpointIdBuilder_.build();
        }
        result.name_ = name_;
        result.endpointType_ = endpointType_;
        if (((bitField0_ & 0x00000001) != 0)) {
          kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.kpiSampleTypes_ = kpiSampleTypes_;
        if (endpointLocationBuilder_ == null) {
          result.endpointLocation_ = endpointLocation_;
        } else {
          result.endpointLocation_ = endpointLocationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.EndPoint) {
          return mergeFrom((context.ContextOuterClass.EndPoint)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.EndPoint other) {
        if (other == context.ContextOuterClass.EndPoint.getDefaultInstance()) return this;
        if (other.hasEndpointId()) {
          mergeEndpointId(other.getEndpointId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getEndpointType().isEmpty()) {
          endpointType_ = other.endpointType_;
          onChanged();
        }
        if (!other.kpiSampleTypes_.isEmpty()) {
          if (kpiSampleTypes_.isEmpty()) {
            kpiSampleTypes_ = other.kpiSampleTypes_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureKpiSampleTypesIsMutable();
            kpiSampleTypes_.addAll(other.kpiSampleTypes_);
          }
          onChanged();
        }
        if (other.hasEndpointLocation()) {
          mergeEndpointLocation(other.getEndpointLocation());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.EndPoint parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.EndPoint) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private context.ContextOuterClass.EndPointId endpointId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return Whether the endpointId field is set.
       */
      public boolean hasEndpointId() {
        return endpointIdBuilder_ != null || endpointId_ != null;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return The endpointId.
       */
      public context.ContextOuterClass.EndPointId getEndpointId() {
        if (endpointIdBuilder_ == null) {
          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        } else {
          return endpointIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endpointId_ = value;
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (endpointIdBuilder_ == null) {
          endpointId_ = builderForValue.build();
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (endpointId_ != null) {
            endpointId_ =
              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
          } else {
            endpointId_ = value;
          }
          onChanged();
        } else {
          endpointIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder clearEndpointId() {
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
          onChanged();
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
        
        onChanged();
        return getEndpointIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
        if (endpointIdBuilder_ != null) {
          return endpointIdBuilder_.getMessageOrBuilder();
        } else {
          return endpointId_ == null ?
              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getEndpointIdFieldBuilder() {
        if (endpointIdBuilder_ == null) {
          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  getEndpointId(),
                  getParentForChildren(),
                  isClean());
          endpointId_ = null;
        }
        return endpointIdBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object endpointType_ = "";
      /**
       * <code>string endpoint_type = 3;</code>
       * @return The endpointType.
       */
      public java.lang.String getEndpointType() {
        java.lang.Object ref = endpointType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          endpointType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string endpoint_type = 3;</code>
       * @return The bytes for endpointType.
       */
      public com.google.protobuf.ByteString
          getEndpointTypeBytes() {
        java.lang.Object ref = endpointType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          endpointType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string endpoint_type = 3;</code>
       * @param value The endpointType to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        endpointType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string endpoint_type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndpointType() {
        
        endpointType_ = getDefaultInstance().getEndpointType();
        onChanged();
        return this;
      }
      /**
       * <code>string endpoint_type = 3;</code>
       * @param value The bytes for endpointType to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        endpointType_ = value;
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> kpiSampleTypes_ =
        java.util.Collections.emptyList();
      private void ensureKpiSampleTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>(kpiSampleTypes_);
          bitField0_ |= 0x00000001;
        }
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @return A list containing the kpiSampleTypes.
       */
      public java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>(kpiSampleTypes_, kpiSampleTypes_converter_);
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @return The count of kpiSampleTypes.
       */
      public int getKpiSampleTypesCount() {
        return kpiSampleTypes_.size();
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @param index The index of the element to return.
       * @return The kpiSampleTypes at the given index.
       */
      public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
        return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @param index The index to set the value at.
       * @param value The kpiSampleTypes to set.
       * @return This builder for chaining.
       */
      public Builder setKpiSampleTypes(
          int index, kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureKpiSampleTypesIsMutable();
        kpiSampleTypes_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @param value The kpiSampleTypes to add.
       * @return This builder for chaining.
       */
      public Builder addKpiSampleTypes(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureKpiSampleTypesIsMutable();
        kpiSampleTypes_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @param values The kpiSampleTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllKpiSampleTypes(
          java.lang.Iterable<? extends kpi_sample_types.KpiSampleTypes.KpiSampleType> values) {
        ensureKpiSampleTypesIsMutable();
        for (kpi_sample_types.KpiSampleTypes.KpiSampleType value : values) {
          kpiSampleTypes_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearKpiSampleTypes() {
        kpiSampleTypes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
       */
      public java.util.List<java.lang.Integer>
      getKpiSampleTypesValueList() {
        return java.util.Collections.unmodifiableList(kpiSampleTypes_);
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
       */
      public int getKpiSampleTypesValue(int index) {
        return kpiSampleTypes_.get(index);
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
       * @return This builder for chaining.
       */
      public Builder setKpiSampleTypesValue(
          int index, int value) {
        ensureKpiSampleTypesIsMutable();
        kpiSampleTypes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @param value The enum numeric value on the wire for kpiSampleTypes to add.
       * @return This builder for chaining.
       */
      public Builder addKpiSampleTypesValue(int value) {
        ensureKpiSampleTypesIsMutable();
        kpiSampleTypes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
       * @param values The enum numeric values on the wire for kpiSampleTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllKpiSampleTypesValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureKpiSampleTypesIsMutable();
        for (int value : values) {
          kpiSampleTypes_.add(value);
        }
        onChanged();
        return this;
      }

      private context.ContextOuterClass.Location endpointLocation_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> endpointLocationBuilder_;
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       * @return Whether the endpointLocation field is set.
       */
      public boolean hasEndpointLocation() {
        return endpointLocationBuilder_ != null || endpointLocation_ != null;
      }
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       * @return The endpointLocation.
       */
      public context.ContextOuterClass.Location getEndpointLocation() {
        if (endpointLocationBuilder_ == null) {
          return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
        } else {
          return endpointLocationBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       */
      public Builder setEndpointLocation(context.ContextOuterClass.Location value) {
        if (endpointLocationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endpointLocation_ = value;
          onChanged();
        } else {
          endpointLocationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       */
      public Builder setEndpointLocation(
          context.ContextOuterClass.Location.Builder builderForValue) {
        if (endpointLocationBuilder_ == null) {
          endpointLocation_ = builderForValue.build();
          onChanged();
        } else {
          endpointLocationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       */
      public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
        if (endpointLocationBuilder_ == null) {
          if (endpointLocation_ != null) {
            endpointLocation_ =
              context.ContextOuterClass.Location.newBuilder(endpointLocation_).mergeFrom(value).buildPartial();
          } else {
            endpointLocation_ = value;
          }
          onChanged();
        } else {
          endpointLocationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       */
      public Builder clearEndpointLocation() {
        if (endpointLocationBuilder_ == null) {
          endpointLocation_ = null;
          onChanged();
        } else {
          endpointLocation_ = null;
          endpointLocationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       */
      public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
        
        onChanged();
        return getEndpointLocationFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       */
      public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
        if (endpointLocationBuilder_ != null) {
          return endpointLocationBuilder_.getMessageOrBuilder();
        } else {
          return endpointLocation_ == null ?
              context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
        }
      }
      /**
       * <code>.context.Location endpoint_location = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> 
          getEndpointLocationFieldBuilder() {
        if (endpointLocationBuilder_ == null) {
          endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder>(
                  getEndpointLocation(),
                  getParentForChildren(),
                  isClean());
          endpointLocation_ = null;
        }
        return endpointLocationBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.EndPoint)
    }

    // @@protoc_insertion_point(class_scope:context.EndPoint)
    private static final context.ContextOuterClass.EndPoint DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPoint();
    }

    public static context.ContextOuterClass.EndPoint getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EndPointNameOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.EndPointName)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    boolean hasEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    context.ContextOuterClass.EndPointId getEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

    /**
     * <code>string device_name = 2;</code>
     * @return The deviceName.
     */
    java.lang.String getDeviceName();
    /**
     * <code>string device_name = 2;</code>
     * @return The bytes for deviceName.
     */
    com.google.protobuf.ByteString
        getDeviceNameBytes();

    /**
     * <code>string endpoint_name = 3;</code>
     * @return The endpointName.
     */
    java.lang.String getEndpointName();
    /**
     * <code>string endpoint_name = 3;</code>
     * @return The bytes for endpointName.
     */
    com.google.protobuf.ByteString
        getEndpointNameBytes();

    /**
     * <code>string endpoint_type = 4;</code>
     * @return The endpointType.
     */
    java.lang.String getEndpointType();
    /**
     * <code>string endpoint_type = 4;</code>
     * @return The bytes for endpointType.
     */
    com.google.protobuf.ByteString
        getEndpointTypeBytes();
  }
  /**
   * Protobuf type {@code context.EndPointName}
   */
  public static final class EndPointName extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.EndPointName)
      EndPointNameOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EndPointName.newBuilder() to construct.
    private EndPointName(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EndPointName() {
      deviceName_ = "";
      endpointName_ = "";
      endpointType_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EndPointName();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EndPointName(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
              if (endpointId_ != null) {
                subBuilder = endpointId_.toBuilder();
              }
              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endpointId_);
                endpointId_ = subBuilder.buildPartial();
              }

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

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

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

              endpointType_ = s;
              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 context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
    }

    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.EndPointId endpointId_;
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    @java.lang.Override
    public boolean hasEndpointId() {
      return endpointId_ != null;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getEndpointId() {
      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
      return getEndpointId();
    }

    public static final int DEVICE_NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object deviceName_;
    /**
     * <code>string device_name = 2;</code>
     * @return The deviceName.
     */
    @java.lang.Override
    public java.lang.String getDeviceName() {
      java.lang.Object ref = deviceName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        deviceName_ = s;
        return s;
      }
    }
    /**
     * <code>string device_name = 2;</code>
     * @return The bytes for deviceName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDeviceNameBytes() {
      java.lang.Object ref = deviceName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deviceName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object endpointName_;
    /**
     * <code>string endpoint_name = 3;</code>
     * @return The endpointName.
     */
    @java.lang.Override
    public java.lang.String getEndpointName() {
      java.lang.Object ref = endpointName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        endpointName_ = s;
        return s;
      }
    }
    /**
     * <code>string endpoint_name = 3;</code>
     * @return The bytes for endpointName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEndpointNameBytes() {
      java.lang.Object ref = endpointName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        endpointName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;
    private volatile java.lang.Object endpointType_;
    /**
     * <code>string endpoint_type = 4;</code>
     * @return The endpointType.
     */
    @java.lang.Override
    public java.lang.String getEndpointType() {
      java.lang.Object ref = endpointType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        endpointType_ = s;
        return s;
      }
    }
    /**
     * <code>string endpoint_type = 4;</code>
     * @return The bytes for endpointType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEndpointTypeBytes() {
      java.lang.Object ref = endpointType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        endpointType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (endpointId_ != null) {
        output.writeMessage(1, getEndpointId());
      }
      if (!getDeviceNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
      }
      if (!getEndpointNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
      }
      if (!getEndpointTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (endpointId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEndpointId());
      }
      if (!getDeviceNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
      }
      if (!getEndpointNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
      }
      if (!getEndpointTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.EndPointName)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.EndPointName other = (context.ContextOuterClass.EndPointName) obj;

      if (hasEndpointId() != other.hasEndpointId()) return false;
      if (hasEndpointId()) {
        if (!getEndpointId()
            .equals(other.getEndpointId())) return false;
      }
      if (!getDeviceName()
          .equals(other.getDeviceName())) return false;
      if (!getEndpointName()
          .equals(other.getEndpointName())) return false;
      if (!getEndpointType()
          .equals(other.getEndpointType())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEndpointId()) {
        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointId().hashCode();
      }
      hash = (37 * hash) + DEVICE_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getDeviceName().hashCode();
      hash = (37 * hash) + ENDPOINT_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getEndpointName().hashCode();
      hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getEndpointType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.EndPointName parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointName parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointName parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointName parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointName parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointName parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointName parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointName 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 context.ContextOuterClass.EndPointName parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointName 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 context.ContextOuterClass.EndPointName parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointName parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.EndPointName prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.EndPointName}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.EndPointName)
        context.ContextOuterClass.EndPointNameOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
      }

      // Construct using context.ContextOuterClass.EndPointName.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }
        deviceName_ = "";

        endpointName_ = "";

        endpointType_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
        return context.ContextOuterClass.EndPointName.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointName build() {
        context.ContextOuterClass.EndPointName result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointName buildPartial() {
        context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
        if (endpointIdBuilder_ == null) {
          result.endpointId_ = endpointId_;
        } else {
          result.endpointId_ = endpointIdBuilder_.build();
        }
        result.deviceName_ = deviceName_;
        result.endpointName_ = endpointName_;
        result.endpointType_ = endpointType_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.EndPointName) {
          return mergeFrom((context.ContextOuterClass.EndPointName)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.EndPointName other) {
        if (other == context.ContextOuterClass.EndPointName.getDefaultInstance()) return this;
        if (other.hasEndpointId()) {
          mergeEndpointId(other.getEndpointId());
        }
        if (!other.getDeviceName().isEmpty()) {
          deviceName_ = other.deviceName_;
          onChanged();
        }
        if (!other.getEndpointName().isEmpty()) {
          endpointName_ = other.endpointName_;
          onChanged();
        }
        if (!other.getEndpointType().isEmpty()) {
          endpointType_ = other.endpointType_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.EndPointName parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.EndPointName) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.EndPointId endpointId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return Whether the endpointId field is set.
       */
      public boolean hasEndpointId() {
        return endpointIdBuilder_ != null || endpointId_ != null;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return The endpointId.
       */
      public context.ContextOuterClass.EndPointId getEndpointId() {
        if (endpointIdBuilder_ == null) {
          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        } else {
          return endpointIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endpointId_ = value;
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (endpointIdBuilder_ == null) {
          endpointId_ = builderForValue.build();
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (endpointId_ != null) {
            endpointId_ =
              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
          } else {
            endpointId_ = value;
          }
          onChanged();
        } else {
          endpointIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder clearEndpointId() {
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
          onChanged();
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
        
        onChanged();
        return getEndpointIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
        if (endpointIdBuilder_ != null) {
          return endpointIdBuilder_.getMessageOrBuilder();
        } else {
          return endpointId_ == null ?
              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getEndpointIdFieldBuilder() {
        if (endpointIdBuilder_ == null) {
          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  getEndpointId(),
                  getParentForChildren(),
                  isClean());
          endpointId_ = null;
        }
        return endpointIdBuilder_;
      }

      private java.lang.Object deviceName_ = "";
      /**
       * <code>string device_name = 2;</code>
       * @return The deviceName.
       */
      public java.lang.String getDeviceName() {
        java.lang.Object ref = deviceName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          deviceName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string device_name = 2;</code>
       * @return The bytes for deviceName.
       */
      public com.google.protobuf.ByteString
          getDeviceNameBytes() {
        java.lang.Object ref = deviceName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deviceName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string device_name = 2;</code>
       * @param value The deviceName to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        deviceName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string device_name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceName() {
        
        deviceName_ = getDefaultInstance().getDeviceName();
        onChanged();
        return this;
      }
      /**
       * <code>string device_name = 2;</code>
       * @param value The bytes for deviceName to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        deviceName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object endpointName_ = "";
      /**
       * <code>string endpoint_name = 3;</code>
       * @return The endpointName.
       */
      public java.lang.String getEndpointName() {
        java.lang.Object ref = endpointName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          endpointName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string endpoint_name = 3;</code>
       * @return The bytes for endpointName.
       */
      public com.google.protobuf.ByteString
          getEndpointNameBytes() {
        java.lang.Object ref = endpointName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          endpointName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string endpoint_name = 3;</code>
       * @param value The endpointName to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        endpointName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string endpoint_name = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndpointName() {
        
        endpointName_ = getDefaultInstance().getEndpointName();
        onChanged();
        return this;
      }
      /**
       * <code>string endpoint_name = 3;</code>
       * @param value The bytes for endpointName to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        endpointName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object endpointType_ = "";
      /**
       * <code>string endpoint_type = 4;</code>
       * @return The endpointType.
       */
      public java.lang.String getEndpointType() {
        java.lang.Object ref = endpointType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          endpointType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string endpoint_type = 4;</code>
       * @return The bytes for endpointType.
       */
      public com.google.protobuf.ByteString
          getEndpointTypeBytes() {
        java.lang.Object ref = endpointType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          endpointType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string endpoint_type = 4;</code>
       * @param value The endpointType to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        endpointType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string endpoint_type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndpointType() {
        
        endpointType_ = getDefaultInstance().getEndpointType();
        onChanged();
        return this;
      }
      /**
       * <code>string endpoint_type = 4;</code>
       * @param value The bytes for endpointType to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        endpointType_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.EndPointName)
    }

    // @@protoc_insertion_point(class_scope:context.EndPointName)
    private static final context.ContextOuterClass.EndPointName DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointName();
    }

    public static context.ContextOuterClass.EndPointName getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EndPointIdListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.EndPointIdList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    java.util.List<context.ContextOuterClass.EndPointId> 
        getEndpointIdsList();
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    context.ContextOuterClass.EndPointId getEndpointIds(int index);
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    int getEndpointIdsCount();
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getEndpointIdsOrBuilderList();
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.EndPointIdList}
   */
  public static final class EndPointIdList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.EndPointIdList)
      EndPointIdListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EndPointIdList.newBuilder() to construct.
    private EndPointIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EndPointIdList() {
      endpointIds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EndPointIdList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EndPointIdList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
                mutable_bitField0_ |= 0x00000001;
              }
              endpointIds_.add(
                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
    }

    public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
      return endpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
        getEndpointIdsOrBuilderList() {
      return endpointIds_;
    }
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    @java.lang.Override
    public int getEndpointIdsCount() {
      return endpointIds_.size();
    }
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
      return endpointIds_.get(index);
    }
    /**
     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
        int index) {
      return endpointIds_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < endpointIds_.size(); i++) {
        output.writeMessage(1, endpointIds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < endpointIds_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, endpointIds_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.EndPointIdList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;

      if (!getEndpointIdsList()
          .equals(other.getEndpointIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.EndPointIdList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointIdList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointIdList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointIdList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointIdList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointIdList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointIdList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointIdList 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 context.ContextOuterClass.EndPointIdList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointIdList 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 context.ContextOuterClass.EndPointIdList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointIdList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.EndPointIdList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.EndPointIdList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.EndPointIdList)
        context.ContextOuterClass.EndPointIdListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
      }

      // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getEndpointIdsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (endpointIdsBuilder_ == null) {
          endpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          endpointIdsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
        return context.ContextOuterClass.EndPointIdList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointIdList build() {
        context.ContextOuterClass.EndPointIdList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointIdList buildPartial() {
        context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
        int from_bitField0_ = bitField0_;
        if (endpointIdsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.endpointIds_ = endpointIds_;
        } else {
          result.endpointIds_ = endpointIdsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.EndPointIdList) {
          return mergeFrom((context.ContextOuterClass.EndPointIdList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.EndPointIdList other) {
        if (other == context.ContextOuterClass.EndPointIdList.getDefaultInstance()) return this;
        if (endpointIdsBuilder_ == null) {
          if (!other.endpointIds_.isEmpty()) {
            if (endpointIds_.isEmpty()) {
              endpointIds_ = other.endpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEndpointIdsIsMutable();
              endpointIds_.addAll(other.endpointIds_);
            }
            onChanged();
          }
        } else {
          if (!other.endpointIds_.isEmpty()) {
            if (endpointIdsBuilder_.isEmpty()) {
              endpointIdsBuilder_.dispose();
              endpointIdsBuilder_ = null;
              endpointIds_ = other.endpointIds_;
              bitField0_ = (bitField0_ & ~0x00000001);
              endpointIdsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEndpointIdsFieldBuilder() : null;
            } else {
              endpointIdsBuilder_.addAllMessages(other.endpointIds_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.EndPointIdList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.EndPointIdList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ =
        java.util.Collections.emptyList();
      private void ensureEndpointIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdsBuilder_;

      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
        if (endpointIdsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(endpointIds_);
        } else {
          return endpointIdsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public int getEndpointIdsCount() {
        if (endpointIdsBuilder_ == null) {
          return endpointIds_.size();
        } else {
          return endpointIdsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
        if (endpointIdsBuilder_ == null) {
          return endpointIds_.get(index);
        } else {
          return endpointIdsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder setEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (endpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointIdsIsMutable();
          endpointIds_.set(index, value);
          onChanged();
        } else {
          endpointIdsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder setEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (endpointIdsBuilder_ == null) {
          ensureEndpointIdsIsMutable();
          endpointIds_.set(index, builderForValue.build());
          onChanged();
        } else {
          endpointIdsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder addEndpointIds(context.ContextOuterClass.EndPointId value) {
        if (endpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointIdsIsMutable();
          endpointIds_.add(value);
          onChanged();
        } else {
          endpointIdsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder addEndpointIds(
          int index, context.ContextOuterClass.EndPointId value) {
        if (endpointIdsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointIdsIsMutable();
          endpointIds_.add(index, value);
          onChanged();
        } else {
          endpointIdsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder addEndpointIds(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (endpointIdsBuilder_ == null) {
          ensureEndpointIdsIsMutable();
          endpointIds_.add(builderForValue.build());
          onChanged();
        } else {
          endpointIdsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder addEndpointIds(
          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (endpointIdsBuilder_ == null) {
          ensureEndpointIdsIsMutable();
          endpointIds_.add(index, builderForValue.build());
          onChanged();
        } else {
          endpointIdsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder addAllEndpointIds(
          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
        if (endpointIdsBuilder_ == null) {
          ensureEndpointIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, endpointIds_);
          onChanged();
        } else {
          endpointIdsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder clearEndpointIds() {
        if (endpointIdsBuilder_ == null) {
          endpointIds_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          endpointIdsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public Builder removeEndpointIds(int index) {
        if (endpointIdsBuilder_ == null) {
          ensureEndpointIdsIsMutable();
          endpointIds_.remove(index);
          onChanged();
        } else {
          endpointIdsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getEndpointIdsBuilder(
          int index) {
        return getEndpointIdsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
          int index) {
        if (endpointIdsBuilder_ == null) {
          return endpointIds_.get(index);  } else {
          return endpointIdsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
           getEndpointIdsOrBuilderList() {
        if (endpointIdsBuilder_ != null) {
          return endpointIdsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(endpointIds_);
        }
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder() {
        return getEndpointIdsFieldBuilder().addBuilder(
            context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder(
          int index) {
        return getEndpointIdsFieldBuilder().addBuilder(
            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
           getEndpointIdsBuilderList() {
        return getEndpointIdsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getEndpointIdsFieldBuilder() {
        if (endpointIdsBuilder_ == null) {
          endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  endpointIds_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          endpointIds_ = null;
        }
        return endpointIdsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.EndPointIdList)
    }

    // @@protoc_insertion_point(class_scope:context.EndPointIdList)
    private static final context.ContextOuterClass.EndPointIdList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointIdList();
    }

    public static context.ContextOuterClass.EndPointIdList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EndPointNameListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.EndPointNameList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    java.util.List<context.ContextOuterClass.EndPointName> 
        getEndpointNamesList();
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    context.ContextOuterClass.EndPointName getEndpointNames(int index);
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    int getEndpointNamesCount();
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
        getEndpointNamesOrBuilderList();
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code context.EndPointNameList}
   */
  public static final class EndPointNameList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.EndPointNameList)
      EndPointNameListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EndPointNameList.newBuilder() to construct.
    private EndPointNameList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EndPointNameList() {
      endpointNames_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EndPointNameList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EndPointNameList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>();
                mutable_bitField0_ |= 0x00000001;
              }
              endpointNames_.add(
                  input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
    }

    public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;
    private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_;
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
      return endpointNames_;
    }
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
        getEndpointNamesOrBuilderList() {
      return endpointNames_;
    }
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    @java.lang.Override
    public int getEndpointNamesCount() {
      return endpointNames_.size();
    }
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
      return endpointNames_.get(index);
    }
    /**
     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
        int index) {
      return endpointNames_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < endpointNames_.size(); i++) {
        output.writeMessage(1, endpointNames_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < endpointNames_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, endpointNames_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.EndPointNameList)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;

      if (!getEndpointNamesList()
          .equals(other.getEndpointNamesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.EndPointNameList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointNameList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointNameList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointNameList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointNameList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.EndPointNameList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.EndPointNameList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointNameList 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 context.ContextOuterClass.EndPointNameList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointNameList 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 context.ContextOuterClass.EndPointNameList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.EndPointNameList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.EndPointNameList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.EndPointNameList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.EndPointNameList)
        context.ContextOuterClass.EndPointNameListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
      }

      // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getEndpointNamesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (endpointNamesBuilder_ == null) {
          endpointNames_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          endpointNamesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
        return context.ContextOuterClass.EndPointNameList.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointNameList build() {
        context.ContextOuterClass.EndPointNameList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.EndPointNameList buildPartial() {
        context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
        int from_bitField0_ = bitField0_;
        if (endpointNamesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.endpointNames_ = endpointNames_;
        } else {
          result.endpointNames_ = endpointNamesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.EndPointNameList) {
          return mergeFrom((context.ContextOuterClass.EndPointNameList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.EndPointNameList other) {
        if (other == context.ContextOuterClass.EndPointNameList.getDefaultInstance()) return this;
        if (endpointNamesBuilder_ == null) {
          if (!other.endpointNames_.isEmpty()) {
            if (endpointNames_.isEmpty()) {
              endpointNames_ = other.endpointNames_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEndpointNamesIsMutable();
              endpointNames_.addAll(other.endpointNames_);
            }
            onChanged();
          }
        } else {
          if (!other.endpointNames_.isEmpty()) {
            if (endpointNamesBuilder_.isEmpty()) {
              endpointNamesBuilder_.dispose();
              endpointNamesBuilder_ = null;
              endpointNames_ = other.endpointNames_;
              bitField0_ = (bitField0_ & ~0x00000001);
              endpointNamesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEndpointNamesFieldBuilder() : null;
            } else {
              endpointNamesBuilder_.addAllMessages(other.endpointNames_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.EndPointNameList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.EndPointNameList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_ =
        java.util.Collections.emptyList();
      private void ensureEndpointNamesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>(endpointNames_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> endpointNamesBuilder_;

      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
        if (endpointNamesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(endpointNames_);
        } else {
          return endpointNamesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public int getEndpointNamesCount() {
        if (endpointNamesBuilder_ == null) {
          return endpointNames_.size();
        } else {
          return endpointNamesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
        if (endpointNamesBuilder_ == null) {
          return endpointNames_.get(index);
        } else {
          return endpointNamesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder setEndpointNames(
          int index, context.ContextOuterClass.EndPointName value) {
        if (endpointNamesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointNamesIsMutable();
          endpointNames_.set(index, value);
          onChanged();
        } else {
          endpointNamesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder setEndpointNames(
          int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
        if (endpointNamesBuilder_ == null) {
          ensureEndpointNamesIsMutable();
          endpointNames_.set(index, builderForValue.build());
          onChanged();
        } else {
          endpointNamesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder addEndpointNames(context.ContextOuterClass.EndPointName value) {
        if (endpointNamesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointNamesIsMutable();
          endpointNames_.add(value);
          onChanged();
        } else {
          endpointNamesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder addEndpointNames(
          int index, context.ContextOuterClass.EndPointName value) {
        if (endpointNamesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointNamesIsMutable();
          endpointNames_.add(index, value);
          onChanged();
        } else {
          endpointNamesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder addEndpointNames(
          context.ContextOuterClass.EndPointName.Builder builderForValue) {
        if (endpointNamesBuilder_ == null) {
          ensureEndpointNamesIsMutable();
          endpointNames_.add(builderForValue.build());
          onChanged();
        } else {
          endpointNamesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder addEndpointNames(
          int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
        if (endpointNamesBuilder_ == null) {
          ensureEndpointNamesIsMutable();
          endpointNames_.add(index, builderForValue.build());
          onChanged();
        } else {
          endpointNamesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder addAllEndpointNames(
          java.lang.Iterable<? extends context.ContextOuterClass.EndPointName> values) {
        if (endpointNamesBuilder_ == null) {
          ensureEndpointNamesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, endpointNames_);
          onChanged();
        } else {
          endpointNamesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder clearEndpointNames() {
        if (endpointNamesBuilder_ == null) {
          endpointNames_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          endpointNamesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public Builder removeEndpointNames(int index) {
        if (endpointNamesBuilder_ == null) {
          ensureEndpointNamesIsMutable();
          endpointNames_.remove(index);
          onChanged();
        } else {
          endpointNamesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public context.ContextOuterClass.EndPointName.Builder getEndpointNamesBuilder(
          int index) {
        return getEndpointNamesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
          int index) {
        if (endpointNamesBuilder_ == null) {
          return endpointNames_.get(index);  } else {
          return endpointNamesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
           getEndpointNamesOrBuilderList() {
        if (endpointNamesBuilder_ != null) {
          return endpointNamesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(endpointNames_);
        }
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder() {
        return getEndpointNamesFieldBuilder().addBuilder(
            context.ContextOuterClass.EndPointName.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder(
          int index) {
        return getEndpointNamesFieldBuilder().addBuilder(
            index, context.ContextOuterClass.EndPointName.getDefaultInstance());
      }
      /**
       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
       */
      public java.util.List<context.ContextOuterClass.EndPointName.Builder> 
           getEndpointNamesBuilderList() {
        return getEndpointNamesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> 
          getEndpointNamesFieldBuilder() {
        if (endpointNamesBuilder_ == null) {
          endpointNamesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder>(
                  endpointNames_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          endpointNames_ = null;
        }
        return endpointNamesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.EndPointNameList)
    }

    // @@protoc_insertion_point(class_scope:context.EndPointNameList)
    private static final context.ContextOuterClass.EndPointNameList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointNameList();
    }

    public static context.ContextOuterClass.EndPointNameList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigRule_CustomOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConfigRule_Custom)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string resource_key = 1;</code>
     * @return The resourceKey.
     */
    java.lang.String getResourceKey();
    /**
     * <code>string resource_key = 1;</code>
     * @return The bytes for resourceKey.
     */
    com.google.protobuf.ByteString
        getResourceKeyBytes();

    /**
     * <code>string resource_value = 2;</code>
     * @return The resourceValue.
     */
    java.lang.String getResourceValue();
    /**
     * <code>string resource_value = 2;</code>
     * @return The bytes for resourceValue.
     */
    com.google.protobuf.ByteString
        getResourceValueBytes();
  }
  /**
   * Protobuf type {@code context.ConfigRule_Custom}
   */
  public static final class ConfigRule_Custom extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConfigRule_Custom)
      ConfigRule_CustomOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfigRule_Custom.newBuilder() to construct.
    private ConfigRule_Custom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConfigRule_Custom() {
      resourceKey_ = "";
      resourceValue_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConfigRule_Custom();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConfigRule_Custom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              resourceValue_ = s;
              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 context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConfigRule_Custom.class, context.ContextOuterClass.ConfigRule_Custom.Builder.class);
    }

    public static final int RESOURCE_KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object resourceKey_;
    /**
     * <code>string resource_key = 1;</code>
     * @return The resourceKey.
     */
    @java.lang.Override
    public java.lang.String getResourceKey() {
      java.lang.Object ref = resourceKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        resourceKey_ = s;
        return s;
      }
    }
    /**
     * <code>string resource_key = 1;</code>
     * @return The bytes for resourceKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceKeyBytes() {
      java.lang.Object ref = resourceKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESOURCE_VALUE_FIELD_NUMBER = 2;
    private volatile java.lang.Object resourceValue_;
    /**
     * <code>string resource_value = 2;</code>
     * @return The resourceValue.
     */
    @java.lang.Override
    public java.lang.String getResourceValue() {
      java.lang.Object ref = resourceValue_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        resourceValue_ = s;
        return s;
      }
    }
    /**
     * <code>string resource_value = 2;</code>
     * @return The bytes for resourceValue.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceValueBytes() {
      java.lang.Object ref = resourceValue_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceValue_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getResourceKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceKey_);
      }
      if (!getResourceValueBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceValue_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getResourceKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceKey_);
      }
      if (!getResourceValueBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resourceValue_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConfigRule_Custom)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConfigRule_Custom other = (context.ContextOuterClass.ConfigRule_Custom) obj;

      if (!getResourceKey()
          .equals(other.getResourceKey())) return false;
      if (!getResourceValue()
          .equals(other.getResourceValue())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule_Custom 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 context.ContextOuterClass.ConfigRule_Custom parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule_Custom 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 context.ContextOuterClass.ConfigRule_Custom parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConfigRule_Custom prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConfigRule_Custom}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConfigRule_Custom)
        context.ContextOuterClass.ConfigRule_CustomOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConfigRule_Custom.class, context.ContextOuterClass.ConfigRule_Custom.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConfigRule_Custom.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        resourceKey_ = "";

        resourceValue_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_Custom getDefaultInstanceForType() {
        return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_Custom build() {
        context.ContextOuterClass.ConfigRule_Custom result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_Custom buildPartial() {
        context.ContextOuterClass.ConfigRule_Custom result = new context.ContextOuterClass.ConfigRule_Custom(this);
        result.resourceKey_ = resourceKey_;
        result.resourceValue_ = resourceValue_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConfigRule_Custom) {
          return mergeFrom((context.ContextOuterClass.ConfigRule_Custom)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConfigRule_Custom other) {
        if (other == context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) return this;
        if (!other.getResourceKey().isEmpty()) {
          resourceKey_ = other.resourceKey_;
          onChanged();
        }
        if (!other.getResourceValue().isEmpty()) {
          resourceValue_ = other.resourceValue_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConfigRule_Custom parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConfigRule_Custom) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object resourceKey_ = "";
      /**
       * <code>string resource_key = 1;</code>
       * @return The resourceKey.
       */
      public java.lang.String getResourceKey() {
        java.lang.Object ref = resourceKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          resourceKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string resource_key = 1;</code>
       * @return The bytes for resourceKey.
       */
      public com.google.protobuf.ByteString
          getResourceKeyBytes() {
        java.lang.Object ref = resourceKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resourceKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string resource_key = 1;</code>
       * @param value The resourceKey to set.
       * @return This builder for chaining.
       */
      public Builder setResourceKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        resourceKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string resource_key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceKey() {
        
        resourceKey_ = getDefaultInstance().getResourceKey();
        onChanged();
        return this;
      }
      /**
       * <code>string resource_key = 1;</code>
       * @param value The bytes for resourceKey to set.
       * @return This builder for chaining.
       */
      public Builder setResourceKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        resourceKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object resourceValue_ = "";
      /**
       * <code>string resource_value = 2;</code>
       * @return The resourceValue.
       */
      public java.lang.String getResourceValue() {
        java.lang.Object ref = resourceValue_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          resourceValue_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string resource_value = 2;</code>
       * @return The bytes for resourceValue.
       */
      public com.google.protobuf.ByteString
          getResourceValueBytes() {
        java.lang.Object ref = resourceValue_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resourceValue_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string resource_value = 2;</code>
       * @param value The resourceValue to set.
       * @return This builder for chaining.
       */
      public Builder setResourceValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        resourceValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string resource_value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceValue() {
        
        resourceValue_ = getDefaultInstance().getResourceValue();
        onChanged();
        return this;
      }
      /**
       * <code>string resource_value = 2;</code>
       * @param value The bytes for resourceValue to set.
       * @return This builder for chaining.
       */
      public Builder setResourceValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        resourceValue_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConfigRule_Custom)
    }

    // @@protoc_insertion_point(class_scope:context.ConfigRule_Custom)
    private static final context.ContextOuterClass.ConfigRule_Custom DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule_Custom();
    }

    public static context.ContextOuterClass.ConfigRule_Custom getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConfigRule_Custom getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigRule_ACLOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConfigRule_ACL)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    boolean hasEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    context.ContextOuterClass.EndPointId getEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

    /**
     * <code>.acl.AclRuleSet rule_set = 2;</code>
     * @return Whether the ruleSet field is set.
     */
    boolean hasRuleSet();
    /**
     * <code>.acl.AclRuleSet rule_set = 2;</code>
     * @return The ruleSet.
     */
    acl.Acl.AclRuleSet getRuleSet();
    /**
     * <code>.acl.AclRuleSet rule_set = 2;</code>
     */
    acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder();
  }
  /**
   * Protobuf type {@code context.ConfigRule_ACL}
   */
  public static final class ConfigRule_ACL extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConfigRule_ACL)
      ConfigRule_ACLOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfigRule_ACL.newBuilder() to construct.
    private ConfigRule_ACL(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConfigRule_ACL() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConfigRule_ACL();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConfigRule_ACL(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
              if (endpointId_ != null) {
                subBuilder = endpointId_.toBuilder();
              }
              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endpointId_);
                endpointId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              acl.Acl.AclRuleSet.Builder subBuilder = null;
              if (ruleSet_ != null) {
                subBuilder = ruleSet_.toBuilder();
              }
              ruleSet_ = input.readMessage(acl.Acl.AclRuleSet.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(ruleSet_);
                ruleSet_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConfigRule_ACL.class, context.ContextOuterClass.ConfigRule_ACL.Builder.class);
    }

    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.EndPointId endpointId_;
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    @java.lang.Override
    public boolean hasEndpointId() {
      return endpointId_ != null;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getEndpointId() {
      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
      return getEndpointId();
    }

    public static final int RULE_SET_FIELD_NUMBER = 2;
    private acl.Acl.AclRuleSet ruleSet_;
    /**
     * <code>.acl.AclRuleSet rule_set = 2;</code>
     * @return Whether the ruleSet field is set.
     */
    @java.lang.Override
    public boolean hasRuleSet() {
      return ruleSet_ != null;
    }
    /**
     * <code>.acl.AclRuleSet rule_set = 2;</code>
     * @return The ruleSet.
     */
    @java.lang.Override
    public acl.Acl.AclRuleSet getRuleSet() {
      return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
    }
    /**
     * <code>.acl.AclRuleSet rule_set = 2;</code>
     */
    @java.lang.Override
    public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
      return getRuleSet();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (endpointId_ != null) {
        output.writeMessage(1, getEndpointId());
      }
      if (ruleSet_ != null) {
        output.writeMessage(2, getRuleSet());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (endpointId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEndpointId());
      }
      if (ruleSet_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getRuleSet());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConfigRule_ACL)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConfigRule_ACL other = (context.ContextOuterClass.ConfigRule_ACL) obj;

      if (hasEndpointId() != other.hasEndpointId()) return false;
      if (hasEndpointId()) {
        if (!getEndpointId()
            .equals(other.getEndpointId())) return false;
      }
      if (hasRuleSet() != other.hasRuleSet()) return false;
      if (hasRuleSet()) {
        if (!getRuleSet()
            .equals(other.getRuleSet())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEndpointId()) {
        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointId().hashCode();
      }
      if (hasRuleSet()) {
        hash = (37 * hash) + RULE_SET_FIELD_NUMBER;
        hash = (53 * hash) + getRuleSet().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule_ACL 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 context.ContextOuterClass.ConfigRule_ACL parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule_ACL 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 context.ContextOuterClass.ConfigRule_ACL parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConfigRule_ACL prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConfigRule_ACL}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConfigRule_ACL)
        context.ContextOuterClass.ConfigRule_ACLOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConfigRule_ACL.class, context.ContextOuterClass.ConfigRule_ACL.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConfigRule_ACL.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }
        if (ruleSetBuilder_ == null) {
          ruleSet_ = null;
        } else {
          ruleSet_ = null;
          ruleSetBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_ACL getDefaultInstanceForType() {
        return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_ACL build() {
        context.ContextOuterClass.ConfigRule_ACL result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_ACL buildPartial() {
        context.ContextOuterClass.ConfigRule_ACL result = new context.ContextOuterClass.ConfigRule_ACL(this);
        if (endpointIdBuilder_ == null) {
          result.endpointId_ = endpointId_;
        } else {
          result.endpointId_ = endpointIdBuilder_.build();
        }
        if (ruleSetBuilder_ == null) {
          result.ruleSet_ = ruleSet_;
        } else {
          result.ruleSet_ = ruleSetBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConfigRule_ACL) {
          return mergeFrom((context.ContextOuterClass.ConfigRule_ACL)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConfigRule_ACL other) {
        if (other == context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance()) return this;
        if (other.hasEndpointId()) {
          mergeEndpointId(other.getEndpointId());
        }
        if (other.hasRuleSet()) {
          mergeRuleSet(other.getRuleSet());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConfigRule_ACL parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConfigRule_ACL) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.EndPointId endpointId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return Whether the endpointId field is set.
       */
      public boolean hasEndpointId() {
        return endpointIdBuilder_ != null || endpointId_ != null;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return The endpointId.
       */
      public context.ContextOuterClass.EndPointId getEndpointId() {
        if (endpointIdBuilder_ == null) {
          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        } else {
          return endpointIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endpointId_ = value;
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (endpointIdBuilder_ == null) {
          endpointId_ = builderForValue.build();
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (endpointId_ != null) {
            endpointId_ =
              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
          } else {
            endpointId_ = value;
          }
          onChanged();
        } else {
          endpointIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder clearEndpointId() {
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
          onChanged();
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
        
        onChanged();
        return getEndpointIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
        if (endpointIdBuilder_ != null) {
          return endpointIdBuilder_.getMessageOrBuilder();
        } else {
          return endpointId_ == null ?
              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getEndpointIdFieldBuilder() {
        if (endpointIdBuilder_ == null) {
          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  getEndpointId(),
                  getParentForChildren(),
                  isClean());
          endpointId_ = null;
        }
        return endpointIdBuilder_;
      }

      private acl.Acl.AclRuleSet ruleSet_;
      private com.google.protobuf.SingleFieldBuilderV3<
          acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder> ruleSetBuilder_;
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       * @return Whether the ruleSet field is set.
       */
      public boolean hasRuleSet() {
        return ruleSetBuilder_ != null || ruleSet_ != null;
      }
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       * @return The ruleSet.
       */
      public acl.Acl.AclRuleSet getRuleSet() {
        if (ruleSetBuilder_ == null) {
          return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
        } else {
          return ruleSetBuilder_.getMessage();
        }
      }
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       */
      public Builder setRuleSet(acl.Acl.AclRuleSet value) {
        if (ruleSetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ruleSet_ = value;
          onChanged();
        } else {
          ruleSetBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       */
      public Builder setRuleSet(
          acl.Acl.AclRuleSet.Builder builderForValue) {
        if (ruleSetBuilder_ == null) {
          ruleSet_ = builderForValue.build();
          onChanged();
        } else {
          ruleSetBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       */
      public Builder mergeRuleSet(acl.Acl.AclRuleSet value) {
        if (ruleSetBuilder_ == null) {
          if (ruleSet_ != null) {
            ruleSet_ =
              acl.Acl.AclRuleSet.newBuilder(ruleSet_).mergeFrom(value).buildPartial();
          } else {
            ruleSet_ = value;
          }
          onChanged();
        } else {
          ruleSetBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       */
      public Builder clearRuleSet() {
        if (ruleSetBuilder_ == null) {
          ruleSet_ = null;
          onChanged();
        } else {
          ruleSet_ = null;
          ruleSetBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       */
      public acl.Acl.AclRuleSet.Builder getRuleSetBuilder() {
        
        onChanged();
        return getRuleSetFieldBuilder().getBuilder();
      }
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       */
      public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
        if (ruleSetBuilder_ != null) {
          return ruleSetBuilder_.getMessageOrBuilder();
        } else {
          return ruleSet_ == null ?
              acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
        }
      }
      /**
       * <code>.acl.AclRuleSet rule_set = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder> 
          getRuleSetFieldBuilder() {
        if (ruleSetBuilder_ == null) {
          ruleSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder>(
                  getRuleSet(),
                  getParentForChildren(),
                  isClean());
          ruleSet_ = null;
        }
        return ruleSetBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConfigRule_ACL)
    }

    // @@protoc_insertion_point(class_scope:context.ConfigRule_ACL)
    private static final context.ContextOuterClass.ConfigRule_ACL DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule_ACL();
    }

    public static context.ContextOuterClass.ConfigRule_ACL getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConfigRule_ACL getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigRuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.ConfigRule)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ConfigActionEnum action = 1;</code>
     * @return The enum numeric value on the wire for action.
     */
    int getActionValue();
    /**
     * <code>.context.ConfigActionEnum action = 1;</code>
     * @return The action.
     */
    context.ContextOuterClass.ConfigActionEnum getAction();

    /**
     * <code>.context.ConfigRule_Custom custom = 2;</code>
     * @return Whether the custom field is set.
     */
    boolean hasCustom();
    /**
     * <code>.context.ConfigRule_Custom custom = 2;</code>
     * @return The custom.
     */
    context.ContextOuterClass.ConfigRule_Custom getCustom();
    /**
     * <code>.context.ConfigRule_Custom custom = 2;</code>
     */
    context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder();

    /**
     * <code>.context.ConfigRule_ACL acl = 3;</code>
     * @return Whether the acl field is set.
     */
    boolean hasAcl();
    /**
     * <code>.context.ConfigRule_ACL acl = 3;</code>
     * @return The acl.
     */
    context.ContextOuterClass.ConfigRule_ACL getAcl();
    /**
     * <code>.context.ConfigRule_ACL acl = 3;</code>
     */
    context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder();

    public context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
  }
  /**
   * Protobuf type {@code context.ConfigRule}
   */
  public static final class ConfigRule extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.ConfigRule)
      ConfigRuleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfigRule.newBuilder() to construct.
    private ConfigRule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConfigRule() {
      action_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConfigRule();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConfigRule(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {
              int rawValue = input.readEnum();

              action_ = rawValue;
              break;
            }
            case 18: {
              context.ContextOuterClass.ConfigRule_Custom.Builder subBuilder = null;
              if (configRuleCase_ == 2) {
                subBuilder = ((context.ContextOuterClass.ConfigRule_Custom) configRule_).toBuilder();
              }
              configRule_ =
                  input.readMessage(context.ContextOuterClass.ConfigRule_Custom.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_Custom) configRule_);
                configRule_ = subBuilder.buildPartial();
              }
              configRuleCase_ = 2;
              break;
            }
            case 26: {
              context.ContextOuterClass.ConfigRule_ACL.Builder subBuilder = null;
              if (configRuleCase_ == 3) {
                subBuilder = ((context.ContextOuterClass.ConfigRule_ACL) configRule_).toBuilder();
              }
              configRule_ =
                  input.readMessage(context.ContextOuterClass.ConfigRule_ACL.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_ACL) configRule_);
                configRule_ = subBuilder.buildPartial();
              }
              configRuleCase_ = 3;
              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 context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_ConfigRule_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.ConfigRule.class, context.ContextOuterClass.ConfigRule.Builder.class);
    }

    private int configRuleCase_ = 0;
    private java.lang.Object configRule_;
    public enum ConfigRuleCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      CUSTOM(2),
      ACL(3),
      CONFIGRULE_NOT_SET(0);
      private final int value;
      private ConfigRuleCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ConfigRuleCase valueOf(int value) {
        return forNumber(value);
      }

      public static ConfigRuleCase forNumber(int value) {
        switch (value) {
          case 2: return CUSTOM;
          case 3: return ACL;
          case 0: return CONFIGRULE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ConfigRuleCase
    getConfigRuleCase() {
      return ConfigRuleCase.forNumber(
          configRuleCase_);
    }

    public static final int ACTION_FIELD_NUMBER = 1;
    private int action_;
    /**
     * <code>.context.ConfigActionEnum action = 1;</code>
     * @return The enum numeric value on the wire for action.
     */
    @java.lang.Override public int getActionValue() {
      return action_;
    }
    /**
     * <code>.context.ConfigActionEnum action = 1;</code>
     * @return The action.
     */
    @java.lang.Override public context.ContextOuterClass.ConfigActionEnum getAction() {
      @SuppressWarnings("deprecation")
      context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
      return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
    }

    public static final int CUSTOM_FIELD_NUMBER = 2;
    /**
     * <code>.context.ConfigRule_Custom custom = 2;</code>
     * @return Whether the custom field is set.
     */
    @java.lang.Override
    public boolean hasCustom() {
      return configRuleCase_ == 2;
    }
    /**
     * <code>.context.ConfigRule_Custom custom = 2;</code>
     * @return The custom.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRule_Custom getCustom() {
      if (configRuleCase_ == 2) {
         return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
      }
      return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
    }
    /**
     * <code>.context.ConfigRule_Custom custom = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder() {
      if (configRuleCase_ == 2) {
         return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
      }
      return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
    }

    public static final int ACL_FIELD_NUMBER = 3;
    /**
     * <code>.context.ConfigRule_ACL acl = 3;</code>
     * @return Whether the acl field is set.
     */
    @java.lang.Override
    public boolean hasAcl() {
      return configRuleCase_ == 3;
    }
    /**
     * <code>.context.ConfigRule_ACL acl = 3;</code>
     * @return The acl.
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRule_ACL getAcl() {
      if (configRuleCase_ == 3) {
         return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
      }
      return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
    }
    /**
     * <code>.context.ConfigRule_ACL acl = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder() {
      if (configRuleCase_ == 3) {
         return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
      }
      return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (action_ != context.ContextOuterClass.ConfigActionEnum.CONFIGACTION_UNDEFINED.getNumber()) {
        output.writeEnum(1, action_);
      }
      if (configRuleCase_ == 2) {
        output.writeMessage(2, (context.ContextOuterClass.ConfigRule_Custom) configRule_);
      }
      if (configRuleCase_ == 3) {
        output.writeMessage(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (action_ != context.ContextOuterClass.ConfigActionEnum.CONFIGACTION_UNDEFINED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, action_);
      }
      if (configRuleCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (context.ContextOuterClass.ConfigRule_Custom) configRule_);
      }
      if (configRuleCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.ConfigRule)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.ConfigRule other = (context.ContextOuterClass.ConfigRule) obj;

      if (action_ != other.action_) return false;
      if (!getConfigRuleCase().equals(other.getConfigRuleCase())) return false;
      switch (configRuleCase_) {
        case 2:
          if (!getCustom()
              .equals(other.getCustom())) return false;
          break;
        case 3:
          if (!getAcl()
              .equals(other.getAcl())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACTION_FIELD_NUMBER;
      hash = (53 * hash) + action_;
      switch (configRuleCase_) {
        case 2:
          hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
          hash = (53 * hash) + getCustom().hashCode();
          break;
        case 3:
          hash = (37 * hash) + ACL_FIELD_NUMBER;
          hash = (53 * hash) + getAcl().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.ConfigRule parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.ConfigRule parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.ConfigRule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule 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 context.ContextOuterClass.ConfigRule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule 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 context.ContextOuterClass.ConfigRule parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.ConfigRule parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.ConfigRule prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.ConfigRule}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.ConfigRule)
        context.ContextOuterClass.ConfigRuleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.ConfigRule.class, context.ContextOuterClass.ConfigRule.Builder.class);
      }

      // Construct using context.ContextOuterClass.ConfigRule.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        action_ = 0;

        configRuleCase_ = 0;
        configRule_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule getDefaultInstanceForType() {
        return context.ContextOuterClass.ConfigRule.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule build() {
        context.ContextOuterClass.ConfigRule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.ConfigRule buildPartial() {
        context.ContextOuterClass.ConfigRule result = new context.ContextOuterClass.ConfigRule(this);
        result.action_ = action_;
        if (configRuleCase_ == 2) {
          if (customBuilder_ == null) {
            result.configRule_ = configRule_;
          } else {
            result.configRule_ = customBuilder_.build();
          }
        }
        if (configRuleCase_ == 3) {
          if (aclBuilder_ == null) {
            result.configRule_ = configRule_;
          } else {
            result.configRule_ = aclBuilder_.build();
          }
        }
        result.configRuleCase_ = configRuleCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.ConfigRule) {
          return mergeFrom((context.ContextOuterClass.ConfigRule)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.ConfigRule other) {
        if (other == context.ContextOuterClass.ConfigRule.getDefaultInstance()) return this;
        if (other.action_ != 0) {
          setActionValue(other.getActionValue());
        }
        switch (other.getConfigRuleCase()) {
          case CUSTOM: {
            mergeCustom(other.getCustom());
            break;
          }
          case ACL: {
            mergeAcl(other.getAcl());
            break;
          }
          case CONFIGRULE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.ConfigRule parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.ConfigRule) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int configRuleCase_ = 0;
      private java.lang.Object configRule_;
      public ConfigRuleCase
          getConfigRuleCase() {
        return ConfigRuleCase.forNumber(
            configRuleCase_);
      }

      public Builder clearConfigRule() {
        configRuleCase_ = 0;
        configRule_ = null;
        onChanged();
        return this;
      }


      private int action_ = 0;
      /**
       * <code>.context.ConfigActionEnum action = 1;</code>
       * @return The enum numeric value on the wire for action.
       */
      @java.lang.Override public int getActionValue() {
        return action_;
      }
      /**
       * <code>.context.ConfigActionEnum action = 1;</code>
       * @param value The enum numeric value on the wire for action to set.
       * @return This builder for chaining.
       */
      public Builder setActionValue(int value) {
        
        action_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.context.ConfigActionEnum action = 1;</code>
       * @return The action.
       */
      @java.lang.Override
      public context.ContextOuterClass.ConfigActionEnum getAction() {
        @SuppressWarnings("deprecation")
        context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
        return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
      }
      /**
       * <code>.context.ConfigActionEnum action = 1;</code>
       * @param value The action to set.
       * @return This builder for chaining.
       */
      public Builder setAction(context.ContextOuterClass.ConfigActionEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        action_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.context.ConfigActionEnum action = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAction() {
        
        action_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> customBuilder_;
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       * @return Whether the custom field is set.
       */
      @java.lang.Override
      public boolean hasCustom() {
        return configRuleCase_ == 2;
      }
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       * @return The custom.
       */
      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_Custom getCustom() {
        if (customBuilder_ == null) {
          if (configRuleCase_ == 2) {
            return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
          }
          return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
        } else {
          if (configRuleCase_ == 2) {
            return customBuilder_.getMessage();
          }
          return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
        }
      }
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       */
      public Builder setCustom(context.ContextOuterClass.ConfigRule_Custom value) {
        if (customBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configRule_ = value;
          onChanged();
        } else {
          customBuilder_.setMessage(value);
        }
        configRuleCase_ = 2;
        return this;
      }
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       */
      public Builder setCustom(
          context.ContextOuterClass.ConfigRule_Custom.Builder builderForValue) {
        if (customBuilder_ == null) {
          configRule_ = builderForValue.build();
          onChanged();
        } else {
          customBuilder_.setMessage(builderForValue.build());
        }
        configRuleCase_ = 2;
        return this;
      }
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       */
      public Builder mergeCustom(context.ContextOuterClass.ConfigRule_Custom value) {
        if (customBuilder_ == null) {
          if (configRuleCase_ == 2 &&
              configRule_ != context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) {
            configRule_ = context.ContextOuterClass.ConfigRule_Custom.newBuilder((context.ContextOuterClass.ConfigRule_Custom) configRule_)
                .mergeFrom(value).buildPartial();
          } else {
            configRule_ = value;
          }
          onChanged();
        } else {
          if (configRuleCase_ == 2) {
            customBuilder_.mergeFrom(value);
          }
          customBuilder_.setMessage(value);
        }
        configRuleCase_ = 2;
        return this;
      }
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       */
      public Builder clearCustom() {
        if (customBuilder_ == null) {
          if (configRuleCase_ == 2) {
            configRuleCase_ = 0;
            configRule_ = null;
            onChanged();
          }
        } else {
          if (configRuleCase_ == 2) {
            configRuleCase_ = 0;
            configRule_ = null;
          }
          customBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       */
      public context.ContextOuterClass.ConfigRule_Custom.Builder getCustomBuilder() {
        return getCustomFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder() {
        if ((configRuleCase_ == 2) && (customBuilder_ != null)) {
          return customBuilder_.getMessageOrBuilder();
        } else {
          if (configRuleCase_ == 2) {
            return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
          }
          return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
        }
      }
      /**
       * <code>.context.ConfigRule_Custom custom = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> 
          getCustomFieldBuilder() {
        if (customBuilder_ == null) {
          if (!(configRuleCase_ == 2)) {
            configRule_ = context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
          }
          customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder>(
                  (context.ContextOuterClass.ConfigRule_Custom) configRule_,
                  getParentForChildren(),
                  isClean());
          configRule_ = null;
        }
        configRuleCase_ = 2;
        onChanged();;
        return customBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder> aclBuilder_;
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       * @return Whether the acl field is set.
       */
      @java.lang.Override
      public boolean hasAcl() {
        return configRuleCase_ == 3;
      }
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       * @return The acl.
       */
      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_ACL getAcl() {
        if (aclBuilder_ == null) {
          if (configRuleCase_ == 3) {
            return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
          }
          return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
        } else {
          if (configRuleCase_ == 3) {
            return aclBuilder_.getMessage();
          }
          return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
        }
      }
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       */
      public Builder setAcl(context.ContextOuterClass.ConfigRule_ACL value) {
        if (aclBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configRule_ = value;
          onChanged();
        } else {
          aclBuilder_.setMessage(value);
        }
        configRuleCase_ = 3;
        return this;
      }
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       */
      public Builder setAcl(
          context.ContextOuterClass.ConfigRule_ACL.Builder builderForValue) {
        if (aclBuilder_ == null) {
          configRule_ = builderForValue.build();
          onChanged();
        } else {
          aclBuilder_.setMessage(builderForValue.build());
        }
        configRuleCase_ = 3;
        return this;
      }
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       */
      public Builder mergeAcl(context.ContextOuterClass.ConfigRule_ACL value) {
        if (aclBuilder_ == null) {
          if (configRuleCase_ == 3 &&
              configRule_ != context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance()) {
            configRule_ = context.ContextOuterClass.ConfigRule_ACL.newBuilder((context.ContextOuterClass.ConfigRule_ACL) configRule_)
                .mergeFrom(value).buildPartial();
          } else {
            configRule_ = value;
          }
          onChanged();
        } else {
          if (configRuleCase_ == 3) {
            aclBuilder_.mergeFrom(value);
          }
          aclBuilder_.setMessage(value);
        }
        configRuleCase_ = 3;
        return this;
      }
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       */
      public Builder clearAcl() {
        if (aclBuilder_ == null) {
          if (configRuleCase_ == 3) {
            configRuleCase_ = 0;
            configRule_ = null;
            onChanged();
          }
        } else {
          if (configRuleCase_ == 3) {
            configRuleCase_ = 0;
            configRule_ = null;
          }
          aclBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       */
      public context.ContextOuterClass.ConfigRule_ACL.Builder getAclBuilder() {
        return getAclFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder() {
        if ((configRuleCase_ == 3) && (aclBuilder_ != null)) {
          return aclBuilder_.getMessageOrBuilder();
        } else {
          if (configRuleCase_ == 3) {
            return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
          }
          return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
        }
      }
      /**
       * <code>.context.ConfigRule_ACL acl = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder> 
          getAclFieldBuilder() {
        if (aclBuilder_ == null) {
          if (!(configRuleCase_ == 3)) {
            configRule_ = context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
          }
          aclBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder>(
                  (context.ContextOuterClass.ConfigRule_ACL) configRule_,
                  getParentForChildren(),
                  isClean());
          configRule_ = null;
        }
        configRuleCase_ = 3;
        onChanged();;
        return aclBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.ConfigRule)
    }

    // @@protoc_insertion_point(class_scope:context.ConfigRule)
    private static final context.ContextOuterClass.ConfigRule DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule();
    }

    public static context.ContextOuterClass.ConfigRule getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.ConfigRule getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Constraint_CustomOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint_Custom)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string constraint_type = 1;</code>
     * @return The constraintType.
     */
    java.lang.String getConstraintType();
    /**
     * <code>string constraint_type = 1;</code>
     * @return The bytes for constraintType.
     */
    com.google.protobuf.ByteString
        getConstraintTypeBytes();

    /**
     * <code>string constraint_value = 2;</code>
     * @return The constraintValue.
     */
    java.lang.String getConstraintValue();
    /**
     * <code>string constraint_value = 2;</code>
     * @return The bytes for constraintValue.
     */
    com.google.protobuf.ByteString
        getConstraintValueBytes();
  }
  /**
   * <pre>
   * ----- Constraint ----------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.Constraint_Custom}
   */
  public static final class Constraint_Custom extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint_Custom)
      Constraint_CustomOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint_Custom.newBuilder() to construct.
    private Constraint_Custom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint_Custom() {
      constraintType_ = "";
      constraintValue_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint_Custom();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint_Custom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              constraintValue_ = s;
              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 context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_Custom_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint_Custom.class, context.ContextOuterClass.Constraint_Custom.Builder.class);
    }

    public static final int CONSTRAINT_TYPE_FIELD_NUMBER = 1;
    private volatile java.lang.Object constraintType_;
    /**
     * <code>string constraint_type = 1;</code>
     * @return The constraintType.
     */
    @java.lang.Override
    public java.lang.String getConstraintType() {
      java.lang.Object ref = constraintType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        constraintType_ = s;
        return s;
      }
    }
    /**
     * <code>string constraint_type = 1;</code>
     * @return The bytes for constraintType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getConstraintTypeBytes() {
      java.lang.Object ref = constraintType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        constraintType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONSTRAINT_VALUE_FIELD_NUMBER = 2;
    private volatile java.lang.Object constraintValue_;
    /**
     * <code>string constraint_value = 2;</code>
     * @return The constraintValue.
     */
    @java.lang.Override
    public java.lang.String getConstraintValue() {
      java.lang.Object ref = constraintValue_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        constraintValue_ = s;
        return s;
      }
    }
    /**
     * <code>string constraint_value = 2;</code>
     * @return The bytes for constraintValue.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getConstraintValueBytes() {
      java.lang.Object ref = constraintValue_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        constraintValue_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getConstraintTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, constraintType_);
      }
      if (!getConstraintValueBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constraintValue_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getConstraintTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, constraintType_);
      }
      if (!getConstraintValueBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constraintValue_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint_Custom)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint_Custom other = (context.ContextOuterClass.Constraint_Custom) obj;

      if (!getConstraintType()
          .equals(other.getConstraintType())) return false;
      if (!getConstraintValue()
          .equals(other.getConstraintValue())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.Constraint_Custom parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_Custom parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_Custom parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_Custom parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_Custom parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_Custom parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_Custom parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_Custom 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 context.ContextOuterClass.Constraint_Custom parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_Custom 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 context.ContextOuterClass.Constraint_Custom parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_Custom parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint_Custom prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Constraint ----------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.Constraint_Custom}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint_Custom)
        context.ContextOuterClass.Constraint_CustomOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_Custom_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint_Custom.class, context.ContextOuterClass.Constraint_Custom.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint_Custom.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        constraintType_ = "";

        constraintValue_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_Custom getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_Custom build() {
        context.ContextOuterClass.Constraint_Custom result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_Custom buildPartial() {
        context.ContextOuterClass.Constraint_Custom result = new context.ContextOuterClass.Constraint_Custom(this);
        result.constraintType_ = constraintType_;
        result.constraintValue_ = constraintValue_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint_Custom) {
          return mergeFrom((context.ContextOuterClass.Constraint_Custom)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint_Custom other) {
        if (other == context.ContextOuterClass.Constraint_Custom.getDefaultInstance()) return this;
        if (!other.getConstraintType().isEmpty()) {
          constraintType_ = other.constraintType_;
          onChanged();
        }
        if (!other.getConstraintValue().isEmpty()) {
          constraintValue_ = other.constraintValue_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint_Custom parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint_Custom) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object constraintType_ = "";
      /**
       * <code>string constraint_type = 1;</code>
       * @return The constraintType.
       */
      public java.lang.String getConstraintType() {
        java.lang.Object ref = constraintType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          constraintType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string constraint_type = 1;</code>
       * @return The bytes for constraintType.
       */
      public com.google.protobuf.ByteString
          getConstraintTypeBytes() {
        java.lang.Object ref = constraintType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          constraintType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string constraint_type = 1;</code>
       * @param value The constraintType to set.
       * @return This builder for chaining.
       */
      public Builder setConstraintType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        constraintType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string constraint_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearConstraintType() {
        
        constraintType_ = getDefaultInstance().getConstraintType();
        onChanged();
        return this;
      }
      /**
       * <code>string constraint_type = 1;</code>
       * @param value The bytes for constraintType to set.
       * @return This builder for chaining.
       */
      public Builder setConstraintTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        constraintType_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object constraintValue_ = "";
      /**
       * <code>string constraint_value = 2;</code>
       * @return The constraintValue.
       */
      public java.lang.String getConstraintValue() {
        java.lang.Object ref = constraintValue_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          constraintValue_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string constraint_value = 2;</code>
       * @return The bytes for constraintValue.
       */
      public com.google.protobuf.ByteString
          getConstraintValueBytes() {
        java.lang.Object ref = constraintValue_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          constraintValue_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string constraint_value = 2;</code>
       * @param value The constraintValue to set.
       * @return This builder for chaining.
       */
      public Builder setConstraintValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        constraintValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string constraint_value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearConstraintValue() {
        
        constraintValue_ = getDefaultInstance().getConstraintValue();
        onChanged();
        return this;
      }
      /**
       * <code>string constraint_value = 2;</code>
       * @param value The bytes for constraintValue to set.
       * @return This builder for chaining.
       */
      public Builder setConstraintValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        constraintValue_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint_Custom)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint_Custom)
    private static final context.ContextOuterClass.Constraint_Custom DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Custom();
    }

    public static context.ContextOuterClass.Constraint_Custom getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint_Custom getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Constraint_ScheduleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint_Schedule)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>float start_timestamp = 1;</code>
     * @return The startTimestamp.
     */
    float getStartTimestamp();

    /**
     * <code>float duration_days = 2;</code>
     * @return The durationDays.
     */
    float getDurationDays();
  }
  /**
   * Protobuf type {@code context.Constraint_Schedule}
   */
  public static final class Constraint_Schedule extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint_Schedule)
      Constraint_ScheduleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint_Schedule.newBuilder() to construct.
    private Constraint_Schedule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint_Schedule() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint_Schedule();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint_Schedule(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 13: {

              startTimestamp_ = input.readFloat();
              break;
            }
            case 21: {

              durationDays_ = input.readFloat();
              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 context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_Schedule_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint_Schedule.class, context.ContextOuterClass.Constraint_Schedule.Builder.class);
    }

    public static final int START_TIMESTAMP_FIELD_NUMBER = 1;
    private float startTimestamp_;
    /**
     * <code>float start_timestamp = 1;</code>
     * @return The startTimestamp.
     */
    @java.lang.Override
    public float getStartTimestamp() {
      return startTimestamp_;
    }

    public static final int DURATION_DAYS_FIELD_NUMBER = 2;
    private float durationDays_;
    /**
     * <code>float duration_days = 2;</code>
     * @return The durationDays.
     */
    @java.lang.Override
    public float getDurationDays() {
      return durationDays_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (startTimestamp_ != 0F) {
        output.writeFloat(1, startTimestamp_);
      }
      if (durationDays_ != 0F) {
        output.writeFloat(2, durationDays_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (startTimestamp_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, startTimestamp_);
      }
      if (durationDays_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(2, durationDays_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint_Schedule)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint_Schedule other = (context.ContextOuterClass.Constraint_Schedule) obj;

      if (java.lang.Float.floatToIntBits(getStartTimestamp())
          != java.lang.Float.floatToIntBits(
              other.getStartTimestamp())) return false;
      if (java.lang.Float.floatToIntBits(getDurationDays())
          != java.lang.Float.floatToIntBits(
              other.getDurationDays())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getStartTimestamp());
      hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getDurationDays());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_Schedule parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_Schedule 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 context.ContextOuterClass.Constraint_Schedule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_Schedule 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 context.ContextOuterClass.Constraint_Schedule parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint_Schedule prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Constraint_Schedule}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint_Schedule)
        context.ContextOuterClass.Constraint_ScheduleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_Schedule_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint_Schedule.class, context.ContextOuterClass.Constraint_Schedule.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint_Schedule.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        startTimestamp_ = 0F;

        durationDays_ = 0F;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_Schedule getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_Schedule build() {
        context.ContextOuterClass.Constraint_Schedule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_Schedule buildPartial() {
        context.ContextOuterClass.Constraint_Schedule result = new context.ContextOuterClass.Constraint_Schedule(this);
        result.startTimestamp_ = startTimestamp_;
        result.durationDays_ = durationDays_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint_Schedule) {
          return mergeFrom((context.ContextOuterClass.Constraint_Schedule)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint_Schedule other) {
        if (other == context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) return this;
        if (other.getStartTimestamp() != 0F) {
          setStartTimestamp(other.getStartTimestamp());
        }
        if (other.getDurationDays() != 0F) {
          setDurationDays(other.getDurationDays());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint_Schedule parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint_Schedule) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private float startTimestamp_ ;
      /**
       * <code>float start_timestamp = 1;</code>
       * @return The startTimestamp.
       */
      @java.lang.Override
      public float getStartTimestamp() {
        return startTimestamp_;
      }
      /**
       * <code>float start_timestamp = 1;</code>
       * @param value The startTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setStartTimestamp(float value) {
        
        startTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float start_timestamp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStartTimestamp() {
        
        startTimestamp_ = 0F;
        onChanged();
        return this;
      }

      private float durationDays_ ;
      /**
       * <code>float duration_days = 2;</code>
       * @return The durationDays.
       */
      @java.lang.Override
      public float getDurationDays() {
        return durationDays_;
      }
      /**
       * <code>float duration_days = 2;</code>
       * @param value The durationDays to set.
       * @return This builder for chaining.
       */
      public Builder setDurationDays(float value) {
        
        durationDays_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float duration_days = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDurationDays() {
        
        durationDays_ = 0F;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint_Schedule)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint_Schedule)
    private static final context.ContextOuterClass.Constraint_Schedule DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Schedule();
    }

    public static context.ContextOuterClass.Constraint_Schedule getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint_Schedule getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GPS_PositionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.GPS_Position)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>float latitude = 1;</code>
     * @return The latitude.
     */
    float getLatitude();

    /**
     * <code>float longitude = 2;</code>
     * @return The longitude.
     */
    float getLongitude();
  }
  /**
   * Protobuf type {@code context.GPS_Position}
   */
  public static final class GPS_Position extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.GPS_Position)
      GPS_PositionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GPS_Position.newBuilder() to construct.
    private GPS_Position(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GPS_Position() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GPS_Position();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GPS_Position(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 13: {

              latitude_ = input.readFloat();
              break;
            }
            case 21: {

              longitude_ = input.readFloat();
              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 context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_GPS_Position_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.GPS_Position.class, context.ContextOuterClass.GPS_Position.Builder.class);
    }

    public static final int LATITUDE_FIELD_NUMBER = 1;
    private float latitude_;
    /**
     * <code>float latitude = 1;</code>
     * @return The latitude.
     */
    @java.lang.Override
    public float getLatitude() {
      return latitude_;
    }

    public static final int LONGITUDE_FIELD_NUMBER = 2;
    private float longitude_;
    /**
     * <code>float longitude = 2;</code>
     * @return The longitude.
     */
    @java.lang.Override
    public float getLongitude() {
      return longitude_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (latitude_ != 0F) {
        output.writeFloat(1, latitude_);
      }
      if (longitude_ != 0F) {
        output.writeFloat(2, longitude_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (latitude_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, latitude_);
      }
      if (longitude_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(2, longitude_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.GPS_Position)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.GPS_Position other = (context.ContextOuterClass.GPS_Position) obj;

      if (java.lang.Float.floatToIntBits(getLatitude())
          != java.lang.Float.floatToIntBits(
              other.getLatitude())) return false;
      if (java.lang.Float.floatToIntBits(getLongitude())
          != java.lang.Float.floatToIntBits(
              other.getLongitude())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getLatitude());
      hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getLongitude());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.GPS_Position parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.GPS_Position parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.GPS_Position parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.GPS_Position parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.GPS_Position parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.GPS_Position parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.GPS_Position parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.GPS_Position 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 context.ContextOuterClass.GPS_Position parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.GPS_Position 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 context.ContextOuterClass.GPS_Position parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.GPS_Position parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.GPS_Position prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.GPS_Position}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.GPS_Position)
        context.ContextOuterClass.GPS_PositionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_GPS_Position_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.GPS_Position.class, context.ContextOuterClass.GPS_Position.Builder.class);
      }

      // Construct using context.ContextOuterClass.GPS_Position.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        latitude_ = 0F;

        longitude_ = 0F;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.GPS_Position getDefaultInstanceForType() {
        return context.ContextOuterClass.GPS_Position.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.GPS_Position build() {
        context.ContextOuterClass.GPS_Position result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.GPS_Position buildPartial() {
        context.ContextOuterClass.GPS_Position result = new context.ContextOuterClass.GPS_Position(this);
        result.latitude_ = latitude_;
        result.longitude_ = longitude_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.GPS_Position) {
          return mergeFrom((context.ContextOuterClass.GPS_Position)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.GPS_Position other) {
        if (other == context.ContextOuterClass.GPS_Position.getDefaultInstance()) return this;
        if (other.getLatitude() != 0F) {
          setLatitude(other.getLatitude());
        }
        if (other.getLongitude() != 0F) {
          setLongitude(other.getLongitude());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.GPS_Position parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.GPS_Position) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private float latitude_ ;
      /**
       * <code>float latitude = 1;</code>
       * @return The latitude.
       */
      @java.lang.Override
      public float getLatitude() {
        return latitude_;
      }
      /**
       * <code>float latitude = 1;</code>
       * @param value The latitude to set.
       * @return This builder for chaining.
       */
      public Builder setLatitude(float value) {
        
        latitude_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float latitude = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLatitude() {
        
        latitude_ = 0F;
        onChanged();
        return this;
      }

      private float longitude_ ;
      /**
       * <code>float longitude = 2;</code>
       * @return The longitude.
       */
      @java.lang.Override
      public float getLongitude() {
        return longitude_;
      }
      /**
       * <code>float longitude = 2;</code>
       * @param value The longitude to set.
       * @return This builder for chaining.
       */
      public Builder setLongitude(float value) {
        
        longitude_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float longitude = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLongitude() {
        
        longitude_ = 0F;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.GPS_Position)
    }

    // @@protoc_insertion_point(class_scope:context.GPS_Position)
    private static final context.ContextOuterClass.GPS_Position DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.GPS_Position();
    }

    public static context.ContextOuterClass.GPS_Position getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.GPS_Position getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Location)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string region = 1;</code>
     * @return Whether the region field is set.
     */
    boolean hasRegion();
    /**
     * <code>string region = 1;</code>
     * @return The region.
     */
    java.lang.String getRegion();
    /**
     * <code>string region = 1;</code>
     * @return The bytes for region.
     */
    com.google.protobuf.ByteString
        getRegionBytes();

    /**
     * <code>.context.GPS_Position gps_position = 2;</code>
     * @return Whether the gpsPosition field is set.
     */
    boolean hasGpsPosition();
    /**
     * <code>.context.GPS_Position gps_position = 2;</code>
     * @return The gpsPosition.
     */
    context.ContextOuterClass.GPS_Position getGpsPosition();
    /**
     * <code>.context.GPS_Position gps_position = 2;</code>
     */
    context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder();

    public context.ContextOuterClass.Location.LocationCase getLocationCase();
  }
  /**
   * Protobuf type {@code context.Location}
   */
  public static final class Location extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Location)
      LocationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Location.newBuilder() to construct.
    private Location(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Location() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Location();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Location(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              locationCase_ = 1;
              location_ = s;
              break;
            }
            case 18: {
              context.ContextOuterClass.GPS_Position.Builder subBuilder = null;
              if (locationCase_ == 2) {
                subBuilder = ((context.ContextOuterClass.GPS_Position) location_).toBuilder();
              }
              location_ =
                  input.readMessage(context.ContextOuterClass.GPS_Position.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.GPS_Position) location_);
                location_ = subBuilder.buildPartial();
              }
              locationCase_ = 2;
              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 context.ContextOuterClass.internal_static_context_Location_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Location_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Location.class, context.ContextOuterClass.Location.Builder.class);
    }

    private int locationCase_ = 0;
    private java.lang.Object location_;
    public enum LocationCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      REGION(1),
      GPS_POSITION(2),
      LOCATION_NOT_SET(0);
      private final int value;
      private LocationCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static LocationCase valueOf(int value) {
        return forNumber(value);
      }

      public static LocationCase forNumber(int value) {
        switch (value) {
          case 1: return REGION;
          case 2: return GPS_POSITION;
          case 0: return LOCATION_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public LocationCase
    getLocationCase() {
      return LocationCase.forNumber(
          locationCase_);
    }

    public static final int REGION_FIELD_NUMBER = 1;
    /**
     * <code>string region = 1;</code>
     * @return Whether the region field is set.
     */
    public boolean hasRegion() {
      return locationCase_ == 1;
    }
    /**
     * <code>string region = 1;</code>
     * @return The region.
     */
    public java.lang.String getRegion() {
      java.lang.Object ref = "";
      if (locationCase_ == 1) {
        ref = location_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (locationCase_ == 1) {
          location_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string region = 1;</code>
     * @return The bytes for region.
     */
    public com.google.protobuf.ByteString
        getRegionBytes() {
      java.lang.Object ref = "";
      if (locationCase_ == 1) {
        ref = location_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (locationCase_ == 1) {
          location_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GPS_POSITION_FIELD_NUMBER = 2;
    /**
     * <code>.context.GPS_Position gps_position = 2;</code>
     * @return Whether the gpsPosition field is set.
     */
    @java.lang.Override
    public boolean hasGpsPosition() {
      return locationCase_ == 2;
    }
    /**
     * <code>.context.GPS_Position gps_position = 2;</code>
     * @return The gpsPosition.
     */
    @java.lang.Override
    public context.ContextOuterClass.GPS_Position getGpsPosition() {
      if (locationCase_ == 2) {
         return (context.ContextOuterClass.GPS_Position) location_;
      }
      return context.ContextOuterClass.GPS_Position.getDefaultInstance();
    }
    /**
     * <code>.context.GPS_Position gps_position = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder() {
      if (locationCase_ == 2) {
         return (context.ContextOuterClass.GPS_Position) location_;
      }
      return context.ContextOuterClass.GPS_Position.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (locationCase_ == 1) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, location_);
      }
      if (locationCase_ == 2) {
        output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (locationCase_ == 1) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, location_);
      }
      if (locationCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Location)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Location other = (context.ContextOuterClass.Location) obj;

      if (!getLocationCase().equals(other.getLocationCase())) return false;
      switch (locationCase_) {
        case 1:
          if (!getRegion()
              .equals(other.getRegion())) return false;
          break;
        case 2:
          if (!getGpsPosition()
              .equals(other.getGpsPosition())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (locationCase_) {
        case 1:
          hash = (37 * hash) + REGION_FIELD_NUMBER;
          hash = (53 * hash) + getRegion().hashCode();
          break;
        case 2:
          hash = (37 * hash) + GPS_POSITION_FIELD_NUMBER;
          hash = (53 * hash) + getGpsPosition().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Location parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Location parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Location parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Location parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Location parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Location parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Location parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Location 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 context.ContextOuterClass.Location parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Location 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 context.ContextOuterClass.Location parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Location parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Location prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Location}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Location)
        context.ContextOuterClass.LocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Location_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Location_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Location.class, context.ContextOuterClass.Location.Builder.class);
      }

      // Construct using context.ContextOuterClass.Location.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        locationCase_ = 0;
        location_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Location_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Location getDefaultInstanceForType() {
        return context.ContextOuterClass.Location.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Location build() {
        context.ContextOuterClass.Location result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Location buildPartial() {
        context.ContextOuterClass.Location result = new context.ContextOuterClass.Location(this);
        if (locationCase_ == 1) {
          result.location_ = location_;
        }
        if (locationCase_ == 2) {
          if (gpsPositionBuilder_ == null) {
            result.location_ = location_;
          } else {
            result.location_ = gpsPositionBuilder_.build();
          }
        }
        result.locationCase_ = locationCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Location) {
          return mergeFrom((context.ContextOuterClass.Location)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Location other) {
        if (other == context.ContextOuterClass.Location.getDefaultInstance()) return this;
        switch (other.getLocationCase()) {
          case REGION: {
            locationCase_ = 1;
            location_ = other.location_;
            onChanged();
            break;
          }
          case GPS_POSITION: {
            mergeGpsPosition(other.getGpsPosition());
            break;
          }
          case LOCATION_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Location parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Location) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int locationCase_ = 0;
      private java.lang.Object location_;
      public LocationCase
          getLocationCase() {
        return LocationCase.forNumber(
            locationCase_);
      }

      public Builder clearLocation() {
        locationCase_ = 0;
        location_ = null;
        onChanged();
        return this;
      }


      /**
       * <code>string region = 1;</code>
       * @return Whether the region field is set.
       */
      @java.lang.Override
      public boolean hasRegion() {
        return locationCase_ == 1;
      }
      /**
       * <code>string region = 1;</code>
       * @return The region.
       */
      @java.lang.Override
      public java.lang.String getRegion() {
        java.lang.Object ref = "";
        if (locationCase_ == 1) {
          ref = location_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (locationCase_ == 1) {
            location_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string region = 1;</code>
       * @return The bytes for region.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getRegionBytes() {
        java.lang.Object ref = "";
        if (locationCase_ == 1) {
          ref = location_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (locationCase_ == 1) {
            location_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string region = 1;</code>
       * @param value The region to set.
       * @return This builder for chaining.
       */
      public Builder setRegion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  locationCase_ = 1;
        location_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string region = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRegion() {
        if (locationCase_ == 1) {
          locationCase_ = 0;
          location_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string region = 1;</code>
       * @param value The bytes for region to set.
       * @return This builder for chaining.
       */
      public Builder setRegionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        locationCase_ = 1;
        location_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder> gpsPositionBuilder_;
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       * @return Whether the gpsPosition field is set.
       */
      @java.lang.Override
      public boolean hasGpsPosition() {
        return locationCase_ == 2;
      }
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       * @return The gpsPosition.
       */
      @java.lang.Override
      public context.ContextOuterClass.GPS_Position getGpsPosition() {
        if (gpsPositionBuilder_ == null) {
          if (locationCase_ == 2) {
            return (context.ContextOuterClass.GPS_Position) location_;
          }
          return context.ContextOuterClass.GPS_Position.getDefaultInstance();
        } else {
          if (locationCase_ == 2) {
            return gpsPositionBuilder_.getMessage();
          }
          return context.ContextOuterClass.GPS_Position.getDefaultInstance();
        }
      }
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       */
      public Builder setGpsPosition(context.ContextOuterClass.GPS_Position value) {
        if (gpsPositionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          location_ = value;
          onChanged();
        } else {
          gpsPositionBuilder_.setMessage(value);
        }
        locationCase_ = 2;
        return this;
      }
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       */
      public Builder setGpsPosition(
          context.ContextOuterClass.GPS_Position.Builder builderForValue) {
        if (gpsPositionBuilder_ == null) {
          location_ = builderForValue.build();
          onChanged();
        } else {
          gpsPositionBuilder_.setMessage(builderForValue.build());
        }
        locationCase_ = 2;
        return this;
      }
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       */
      public Builder mergeGpsPosition(context.ContextOuterClass.GPS_Position value) {
        if (gpsPositionBuilder_ == null) {
          if (locationCase_ == 2 &&
              location_ != context.ContextOuterClass.GPS_Position.getDefaultInstance()) {
            location_ = context.ContextOuterClass.GPS_Position.newBuilder((context.ContextOuterClass.GPS_Position) location_)
                .mergeFrom(value).buildPartial();
          } else {
            location_ = value;
          }
          onChanged();
        } else {
          if (locationCase_ == 2) {
            gpsPositionBuilder_.mergeFrom(value);
          }
          gpsPositionBuilder_.setMessage(value);
        }
        locationCase_ = 2;
        return this;
      }
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       */
      public Builder clearGpsPosition() {
        if (gpsPositionBuilder_ == null) {
          if (locationCase_ == 2) {
            locationCase_ = 0;
            location_ = null;
            onChanged();
          }
        } else {
          if (locationCase_ == 2) {
            locationCase_ = 0;
            location_ = null;
          }
          gpsPositionBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       */
      public context.ContextOuterClass.GPS_Position.Builder getGpsPositionBuilder() {
        return getGpsPositionFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder() {
        if ((locationCase_ == 2) && (gpsPositionBuilder_ != null)) {
          return gpsPositionBuilder_.getMessageOrBuilder();
        } else {
          if (locationCase_ == 2) {
            return (context.ContextOuterClass.GPS_Position) location_;
          }
          return context.ContextOuterClass.GPS_Position.getDefaultInstance();
        }
      }
      /**
       * <code>.context.GPS_Position gps_position = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder> 
          getGpsPositionFieldBuilder() {
        if (gpsPositionBuilder_ == null) {
          if (!(locationCase_ == 2)) {
            location_ = context.ContextOuterClass.GPS_Position.getDefaultInstance();
          }
          gpsPositionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder>(
                  (context.ContextOuterClass.GPS_Position) location_,
                  getParentForChildren(),
                  isClean());
          location_ = null;
        }
        locationCase_ = 2;
        onChanged();;
        return gpsPositionBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Location)
    }

    // @@protoc_insertion_point(class_scope:context.Location)
    private static final context.ContextOuterClass.Location DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Location();
    }

    public static context.ContextOuterClass.Location getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Location getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Constraint_EndPointLocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint_EndPointLocation)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    boolean hasEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    context.ContextOuterClass.EndPointId getEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

    /**
     * <code>.context.Location location = 2;</code>
     * @return Whether the location field is set.
     */
    boolean hasLocation();
    /**
     * <code>.context.Location location = 2;</code>
     * @return The location.
     */
    context.ContextOuterClass.Location getLocation();
    /**
     * <code>.context.Location location = 2;</code>
     */
    context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder();
  }
  /**
   * Protobuf type {@code context.Constraint_EndPointLocation}
   */
  public static final class Constraint_EndPointLocation extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint_EndPointLocation)
      Constraint_EndPointLocationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint_EndPointLocation.newBuilder() to construct.
    private Constraint_EndPointLocation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint_EndPointLocation() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint_EndPointLocation();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint_EndPointLocation(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
              if (endpointId_ != null) {
                subBuilder = endpointId_.toBuilder();
              }
              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endpointId_);
                endpointId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              context.ContextOuterClass.Location.Builder subBuilder = null;
              if (location_ != null) {
                subBuilder = location_.toBuilder();
              }
              location_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(location_);
                location_ = subBuilder.buildPartial();
              }

              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 context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint_EndPointLocation.class, context.ContextOuterClass.Constraint_EndPointLocation.Builder.class);
    }

    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.EndPointId endpointId_;
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    @java.lang.Override
    public boolean hasEndpointId() {
      return endpointId_ != null;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getEndpointId() {
      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
      return getEndpointId();
    }

    public static final int LOCATION_FIELD_NUMBER = 2;
    private context.ContextOuterClass.Location location_;
    /**
     * <code>.context.Location location = 2;</code>
     * @return Whether the location field is set.
     */
    @java.lang.Override
    public boolean hasLocation() {
      return location_ != null;
    }
    /**
     * <code>.context.Location location = 2;</code>
     * @return The location.
     */
    @java.lang.Override
    public context.ContextOuterClass.Location getLocation() {
      return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
    }
    /**
     * <code>.context.Location location = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
      return getLocation();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (endpointId_ != null) {
        output.writeMessage(1, getEndpointId());
      }
      if (location_ != null) {
        output.writeMessage(2, getLocation());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (endpointId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEndpointId());
      }
      if (location_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getLocation());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint_EndPointLocation)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint_EndPointLocation other = (context.ContextOuterClass.Constraint_EndPointLocation) obj;

      if (hasEndpointId() != other.hasEndpointId()) return false;
      if (hasEndpointId()) {
        if (!getEndpointId()
            .equals(other.getEndpointId())) return false;
      }
      if (hasLocation() != other.hasLocation()) return false;
      if (hasLocation()) {
        if (!getLocation()
            .equals(other.getLocation())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEndpointId()) {
        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointId().hashCode();
      }
      if (hasLocation()) {
        hash = (37 * hash) + LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getLocation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation 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 context.ContextOuterClass.Constraint_EndPointLocation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation 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 context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint_EndPointLocation prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Constraint_EndPointLocation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint_EndPointLocation)
        context.ContextOuterClass.Constraint_EndPointLocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint_EndPointLocation.class, context.ContextOuterClass.Constraint_EndPointLocation.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint_EndPointLocation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }
        if (locationBuilder_ == null) {
          location_ = null;
        } else {
          location_ = null;
          locationBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointLocation build() {
        context.ContextOuterClass.Constraint_EndPointLocation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointLocation buildPartial() {
        context.ContextOuterClass.Constraint_EndPointLocation result = new context.ContextOuterClass.Constraint_EndPointLocation(this);
        if (endpointIdBuilder_ == null) {
          result.endpointId_ = endpointId_;
        } else {
          result.endpointId_ = endpointIdBuilder_.build();
        }
        if (locationBuilder_ == null) {
          result.location_ = location_;
        } else {
          result.location_ = locationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint_EndPointLocation) {
          return mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint_EndPointLocation other) {
        if (other == context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance()) return this;
        if (other.hasEndpointId()) {
          mergeEndpointId(other.getEndpointId());
        }
        if (other.hasLocation()) {
          mergeLocation(other.getLocation());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint_EndPointLocation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint_EndPointLocation) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.EndPointId endpointId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return Whether the endpointId field is set.
       */
      public boolean hasEndpointId() {
        return endpointIdBuilder_ != null || endpointId_ != null;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return The endpointId.
       */
      public context.ContextOuterClass.EndPointId getEndpointId() {
        if (endpointIdBuilder_ == null) {
          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        } else {
          return endpointIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endpointId_ = value;
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (endpointIdBuilder_ == null) {
          endpointId_ = builderForValue.build();
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (endpointId_ != null) {
            endpointId_ =
              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
          } else {
            endpointId_ = value;
          }
          onChanged();
        } else {
          endpointIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder clearEndpointId() {
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
          onChanged();
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
        
        onChanged();
        return getEndpointIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
        if (endpointIdBuilder_ != null) {
          return endpointIdBuilder_.getMessageOrBuilder();
        } else {
          return endpointId_ == null ?
              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getEndpointIdFieldBuilder() {
        if (endpointIdBuilder_ == null) {
          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  getEndpointId(),
                  getParentForChildren(),
                  isClean());
          endpointId_ = null;
        }
        return endpointIdBuilder_;
      }

      private context.ContextOuterClass.Location location_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> locationBuilder_;
      /**
       * <code>.context.Location location = 2;</code>
       * @return Whether the location field is set.
       */
      public boolean hasLocation() {
        return locationBuilder_ != null || location_ != null;
      }
      /**
       * <code>.context.Location location = 2;</code>
       * @return The location.
       */
      public context.ContextOuterClass.Location getLocation() {
        if (locationBuilder_ == null) {
          return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
        } else {
          return locationBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.Location location = 2;</code>
       */
      public Builder setLocation(context.ContextOuterClass.Location value) {
        if (locationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          location_ = value;
          onChanged();
        } else {
          locationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.Location location = 2;</code>
       */
      public Builder setLocation(
          context.ContextOuterClass.Location.Builder builderForValue) {
        if (locationBuilder_ == null) {
          location_ = builderForValue.build();
          onChanged();
        } else {
          locationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.Location location = 2;</code>
       */
      public Builder mergeLocation(context.ContextOuterClass.Location value) {
        if (locationBuilder_ == null) {
          if (location_ != null) {
            location_ =
              context.ContextOuterClass.Location.newBuilder(location_).mergeFrom(value).buildPartial();
          } else {
            location_ = value;
          }
          onChanged();
        } else {
          locationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.Location location = 2;</code>
       */
      public Builder clearLocation() {
        if (locationBuilder_ == null) {
          location_ = null;
          onChanged();
        } else {
          location_ = null;
          locationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.Location location = 2;</code>
       */
      public context.ContextOuterClass.Location.Builder getLocationBuilder() {
        
        onChanged();
        return getLocationFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Location location = 2;</code>
       */
      public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
        if (locationBuilder_ != null) {
          return locationBuilder_.getMessageOrBuilder();
        } else {
          return location_ == null ?
              context.ContextOuterClass.Location.getDefaultInstance() : location_;
        }
      }
      /**
       * <code>.context.Location location = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> 
          getLocationFieldBuilder() {
        if (locationBuilder_ == null) {
          locationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder>(
                  getLocation(),
                  getParentForChildren(),
                  isClean());
          location_ = null;
        }
        return locationBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint_EndPointLocation)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint_EndPointLocation)
    private static final context.ContextOuterClass.Constraint_EndPointLocation DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_EndPointLocation();
    }

    public static context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Constraint_EndPointPriorityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint_EndPointPriority)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    boolean hasEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    context.ContextOuterClass.EndPointId getEndpointId();
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

    /**
     * <code>uint32 priority = 2;</code>
     * @return The priority.
     */
    int getPriority();
  }
  /**
   * Protobuf type {@code context.Constraint_EndPointPriority}
   */
  public static final class Constraint_EndPointPriority extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint_EndPointPriority)
      Constraint_EndPointPriorityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint_EndPointPriority.newBuilder() to construct.
    private Constraint_EndPointPriority(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint_EndPointPriority() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint_EndPointPriority();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint_EndPointPriority(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
              if (endpointId_ != null) {
                subBuilder = endpointId_.toBuilder();
              }
              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endpointId_);
                endpointId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 16: {

              priority_ = input.readUInt32();
              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 context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint_EndPointPriority.class, context.ContextOuterClass.Constraint_EndPointPriority.Builder.class);
    }

    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.EndPointId endpointId_;
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return Whether the endpointId field is set.
     */
    @java.lang.Override
    public boolean hasEndpointId() {
      return endpointId_ != null;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     * @return The endpointId.
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointId getEndpointId() {
      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
    }
    /**
     * <code>.context.EndPointId endpoint_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
      return getEndpointId();
    }

    public static final int PRIORITY_FIELD_NUMBER = 2;
    private int priority_;
    /**
     * <code>uint32 priority = 2;</code>
     * @return The priority.
     */
    @java.lang.Override
    public int getPriority() {
      return priority_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (endpointId_ != null) {
        output.writeMessage(1, getEndpointId());
      }
      if (priority_ != 0) {
        output.writeUInt32(2, priority_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (endpointId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEndpointId());
      }
      if (priority_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, priority_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint_EndPointPriority)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint_EndPointPriority other = (context.ContextOuterClass.Constraint_EndPointPriority) obj;

      if (hasEndpointId() != other.hasEndpointId()) return false;
      if (hasEndpointId()) {
        if (!getEndpointId()
            .equals(other.getEndpointId())) return false;
      }
      if (getPriority()
          != other.getPriority()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEndpointId()) {
        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointId().hashCode();
      }
      hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
      hash = (53 * hash) + getPriority();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority 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 context.ContextOuterClass.Constraint_EndPointPriority parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority 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 context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint_EndPointPriority prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Constraint_EndPointPriority}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint_EndPointPriority)
        context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint_EndPointPriority.class, context.ContextOuterClass.Constraint_EndPointPriority.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint_EndPointPriority.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }
        priority_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointPriority build() {
        context.ContextOuterClass.Constraint_EndPointPriority result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointPriority buildPartial() {
        context.ContextOuterClass.Constraint_EndPointPriority result = new context.ContextOuterClass.Constraint_EndPointPriority(this);
        if (endpointIdBuilder_ == null) {
          result.endpointId_ = endpointId_;
        } else {
          result.endpointId_ = endpointIdBuilder_.build();
        }
        result.priority_ = priority_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint_EndPointPriority) {
          return mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint_EndPointPriority other) {
        if (other == context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance()) return this;
        if (other.hasEndpointId()) {
          mergeEndpointId(other.getEndpointId());
        }
        if (other.getPriority() != 0) {
          setPriority(other.getPriority());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint_EndPointPriority parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint_EndPointPriority) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.EndPointId endpointId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return Whether the endpointId field is set.
       */
      public boolean hasEndpointId() {
        return endpointIdBuilder_ != null || endpointId_ != null;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       * @return The endpointId.
       */
      public context.ContextOuterClass.EndPointId getEndpointId() {
        if (endpointIdBuilder_ == null) {
          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        } else {
          return endpointIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endpointId_ = value;
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder setEndpointId(
          context.ContextOuterClass.EndPointId.Builder builderForValue) {
        if (endpointIdBuilder_ == null) {
          endpointId_ = builderForValue.build();
          onChanged();
        } else {
          endpointIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
        if (endpointIdBuilder_ == null) {
          if (endpointId_ != null) {
            endpointId_ =
              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
          } else {
            endpointId_ = value;
          }
          onChanged();
        } else {
          endpointIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public Builder clearEndpointId() {
        if (endpointIdBuilder_ == null) {
          endpointId_ = null;
          onChanged();
        } else {
          endpointId_ = null;
          endpointIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
        
        onChanged();
        return getEndpointIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
        if (endpointIdBuilder_ != null) {
          return endpointIdBuilder_.getMessageOrBuilder();
        } else {
          return endpointId_ == null ?
              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }
      }
      /**
       * <code>.context.EndPointId endpoint_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
          getEndpointIdFieldBuilder() {
        if (endpointIdBuilder_ == null) {
          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
                  getEndpointId(),
                  getParentForChildren(),
                  isClean());
          endpointId_ = null;
        }
        return endpointIdBuilder_;
      }

      private int priority_ ;
      /**
       * <code>uint32 priority = 2;</code>
       * @return The priority.
       */
      @java.lang.Override
      public int getPriority() {
        return priority_;
      }
      /**
       * <code>uint32 priority = 2;</code>
       * @param value The priority to set.
       * @return This builder for chaining.
       */
      public Builder setPriority(int value) {
        
        priority_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 priority = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPriority() {
        
        priority_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint_EndPointPriority)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint_EndPointPriority)
    private static final context.ContextOuterClass.Constraint_EndPointPriority DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_EndPointPriority();
    }

    public static context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Constraint_SLA_LatencyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Latency)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>float e2e_latency_ms = 1;</code>
     * @return The e2eLatencyMs.
     */
    float getE2ELatencyMs();
  }
  /**
   * Protobuf type {@code context.Constraint_SLA_Latency}
   */
  public static final class Constraint_SLA_Latency extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Latency)
      Constraint_SLA_LatencyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint_SLA_Latency.newBuilder() to construct.
    private Constraint_SLA_Latency(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint_SLA_Latency() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint_SLA_Latency();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint_SLA_Latency(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 13: {

              e2ELatencyMs_ = input.readFloat();
              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 context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint_SLA_Latency.class, context.ContextOuterClass.Constraint_SLA_Latency.Builder.class);
    }

    public static final int E2E_LATENCY_MS_FIELD_NUMBER = 1;
    private float e2ELatencyMs_;
    /**
     * <code>float e2e_latency_ms = 1;</code>
     * @return The e2eLatencyMs.
     */
    @java.lang.Override
    public float getE2ELatencyMs() {
      return e2ELatencyMs_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (e2ELatencyMs_ != 0F) {
        output.writeFloat(1, e2ELatencyMs_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (e2ELatencyMs_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, e2ELatencyMs_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Latency)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint_SLA_Latency other = (context.ContextOuterClass.Constraint_SLA_Latency) obj;

      if (java.lang.Float.floatToIntBits(getE2ELatencyMs())
          != java.lang.Float.floatToIntBits(
              other.getE2ELatencyMs())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency 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 context.ContextOuterClass.Constraint_SLA_Latency parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency 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 context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Latency prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Constraint_SLA_Latency}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Latency)
        context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint_SLA_Latency.class, context.ContextOuterClass.Constraint_SLA_Latency.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint_SLA_Latency.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        e2ELatencyMs_ = 0F;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Latency build() {
        context.ContextOuterClass.Constraint_SLA_Latency result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Latency buildPartial() {
        context.ContextOuterClass.Constraint_SLA_Latency result = new context.ContextOuterClass.Constraint_SLA_Latency(this);
        result.e2ELatencyMs_ = e2ELatencyMs_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint_SLA_Latency) {
          return mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Latency other) {
        if (other == context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance()) return this;
        if (other.getE2ELatencyMs() != 0F) {
          setE2ELatencyMs(other.getE2ELatencyMs());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint_SLA_Latency parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Latency) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private float e2ELatencyMs_ ;
      /**
       * <code>float e2e_latency_ms = 1;</code>
       * @return The e2eLatencyMs.
       */
      @java.lang.Override
      public float getE2ELatencyMs() {
        return e2ELatencyMs_;
      }
      /**
       * <code>float e2e_latency_ms = 1;</code>
       * @param value The e2eLatencyMs to set.
       * @return This builder for chaining.
       */
      public Builder setE2ELatencyMs(float value) {
        
        e2ELatencyMs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float e2e_latency_ms = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearE2ELatencyMs() {
        
        e2ELatencyMs_ = 0F;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Latency)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Latency)
    private static final context.ContextOuterClass.Constraint_SLA_Latency DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Latency();
    }

    public static context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Constraint_SLA_CapacityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Capacity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>float capacity_gbps = 1;</code>
     * @return The capacityGbps.
     */
    float getCapacityGbps();
  }
  /**
   * Protobuf type {@code context.Constraint_SLA_Capacity}
   */
  public static final class Constraint_SLA_Capacity extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Capacity)
      Constraint_SLA_CapacityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint_SLA_Capacity.newBuilder() to construct.
    private Constraint_SLA_Capacity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint_SLA_Capacity() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint_SLA_Capacity();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint_SLA_Capacity(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 13: {

              capacityGbps_ = input.readFloat();
              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 context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
    }

    public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;
    private float capacityGbps_;
    /**
     * <code>float capacity_gbps = 1;</code>
     * @return The capacityGbps.
     */
    @java.lang.Override
    public float getCapacityGbps() {
      return capacityGbps_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (capacityGbps_ != 0F) {
        output.writeFloat(1, capacityGbps_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (capacityGbps_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, capacityGbps_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Capacity)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;

      if (java.lang.Float.floatToIntBits(getCapacityGbps())
          != java.lang.Float.floatToIntBits(
              other.getCapacityGbps())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity 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 context.ContextOuterClass.Constraint_SLA_Capacity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity 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 context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Capacity prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Constraint_SLA_Capacity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Capacity)
        context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        capacityGbps_ = 0F;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Capacity build() {
        context.ContextOuterClass.Constraint_SLA_Capacity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
        context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
        result.capacityGbps_ = capacityGbps_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint_SLA_Capacity) {
          return mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Capacity other) {
        if (other == context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance()) return this;
        if (other.getCapacityGbps() != 0F) {
          setCapacityGbps(other.getCapacityGbps());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint_SLA_Capacity parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Capacity) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private float capacityGbps_ ;
      /**
       * <code>float capacity_gbps = 1;</code>
       * @return The capacityGbps.
       */
      @java.lang.Override
      public float getCapacityGbps() {
        return capacityGbps_;
      }
      /**
       * <code>float capacity_gbps = 1;</code>
       * @param value The capacityGbps to set.
       * @return This builder for chaining.
       */
      public Builder setCapacityGbps(float value) {
        
        capacityGbps_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float capacity_gbps = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCapacityGbps() {
        
        capacityGbps_ = 0F;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Capacity)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Capacity)
    private static final context.ContextOuterClass.Constraint_SLA_Capacity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Capacity();
    }

    public static context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Constraint_SLA_AvailabilityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Availability)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>uint32 num_disjoint_paths = 1;</code>
     * @return The numDisjointPaths.
     */
    int getNumDisjointPaths();

    /**
     * <code>bool all_active = 2;</code>
     * @return The allActive.
     */
    boolean getAllActive();
  }
  /**
   * Protobuf type {@code context.Constraint_SLA_Availability}
   */
  public static final class Constraint_SLA_Availability extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Availability)
      Constraint_SLA_AvailabilityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint_SLA_Availability.newBuilder() to construct.
    private Constraint_SLA_Availability(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint_SLA_Availability() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint_SLA_Availability();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint_SLA_Availability(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {

              numDisjointPaths_ = input.readUInt32();
              break;
            }
            case 16: {

              allActive_ = input.readBool();
              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 context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
    }

    public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;
    private int numDisjointPaths_;
    /**
     * <code>uint32 num_disjoint_paths = 1;</code>
     * @return The numDisjointPaths.
     */
    @java.lang.Override
    public int getNumDisjointPaths() {
      return numDisjointPaths_;
    }

    public static final int ALL_ACTIVE_FIELD_NUMBER = 2;
    private boolean allActive_;
    /**
     * <code>bool all_active = 2;</code>
     * @return The allActive.
     */
    @java.lang.Override
    public boolean getAllActive() {
      return allActive_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (numDisjointPaths_ != 0) {
        output.writeUInt32(1, numDisjointPaths_);
      }
      if (allActive_ != false) {
        output.writeBool(2, allActive_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (numDisjointPaths_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, numDisjointPaths_);
      }
      if (allActive_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, allActive_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Availability)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint_SLA_Availability other = (context.ContextOuterClass.Constraint_SLA_Availability) obj;

      if (getNumDisjointPaths()
          != other.getNumDisjointPaths()) return false;
      if (getAllActive()
          != other.getAllActive()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NUM_DISJOINT_PATHS_FIELD_NUMBER;
      hash = (53 * hash) + getNumDisjointPaths();
      hash = (37 * hash) + ALL_ACTIVE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getAllActive());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability 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 context.ContextOuterClass.Constraint_SLA_Availability parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability 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 context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Availability prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Constraint_SLA_Availability}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Availability)
        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        numDisjointPaths_ = 0;

        allActive_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Availability build() {
        context.ContextOuterClass.Constraint_SLA_Availability result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
        context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
        result.numDisjointPaths_ = numDisjointPaths_;
        result.allActive_ = allActive_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint_SLA_Availability) {
          return mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Availability other) {
        if (other == context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance()) return this;
        if (other.getNumDisjointPaths() != 0) {
          setNumDisjointPaths(other.getNumDisjointPaths());
        }
        if (other.getAllActive() != false) {
          setAllActive(other.getAllActive());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint_SLA_Availability parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Availability) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int numDisjointPaths_ ;
      /**
       * <code>uint32 num_disjoint_paths = 1;</code>
       * @return The numDisjointPaths.
       */
      @java.lang.Override
      public int getNumDisjointPaths() {
        return numDisjointPaths_;
      }
      /**
       * <code>uint32 num_disjoint_paths = 1;</code>
       * @param value The numDisjointPaths to set.
       * @return This builder for chaining.
       */
      public Builder setNumDisjointPaths(int value) {
        
        numDisjointPaths_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 num_disjoint_paths = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumDisjointPaths() {
        
        numDisjointPaths_ = 0;
        onChanged();
        return this;
      }

      private boolean allActive_ ;
      /**
       * <code>bool all_active = 2;</code>
       * @return The allActive.
       */
      @java.lang.Override
      public boolean getAllActive() {
        return allActive_;
      }
      /**
       * <code>bool all_active = 2;</code>
       * @param value The allActive to set.
       * @return This builder for chaining.
       */
      public Builder setAllActive(boolean value) {
        
        allActive_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool all_active = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAllActive() {
        
        allActive_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Availability)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Availability)
    private static final context.ContextOuterClass.Constraint_SLA_Availability DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Availability();
    }

    public static context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Constraint_SLA_Isolation_levelOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Isolation_level)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @return A list containing the isolationLevel.
     */
    java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList();
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @return The count of isolationLevel.
     */
    int getIsolationLevelCount();
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @param index The index of the element to return.
     * @return The isolationLevel at the given index.
     */
    context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index);
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @return A list containing the enum numeric values on the wire for isolationLevel.
     */
    java.util.List<java.lang.Integer>
    getIsolationLevelValueList();
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of isolationLevel at the given index.
     */
    int getIsolationLevelValue(int index);
  }
  /**
   * Protobuf type {@code context.Constraint_SLA_Isolation_level}
   */
  public static final class Constraint_SLA_Isolation_level extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Isolation_level)
      Constraint_SLA_Isolation_levelOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint_SLA_Isolation_level.newBuilder() to construct.
    private Constraint_SLA_Isolation_level(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint_SLA_Isolation_level() {
      isolationLevel_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint_SLA_Isolation_level();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint_SLA_Isolation_level(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {
              int rawValue = input.readEnum();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              isolationLevel_.add(rawValue);
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000001;
                }
                isolationLevel_.add(rawValue);
              }
              input.popLimit(oldLimit);
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
    }

    public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
    private java.util.List<java.lang.Integer> isolationLevel_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum> isolationLevel_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>() {
              public context.ContextOuterClass.IsolationLevelEnum convert(java.lang.Integer from) {
                @SuppressWarnings("deprecation")
                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.valueOf(from);
                return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
              }
            };
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @return A list containing the isolationLevel.
     */
    @java.lang.Override
    public java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>(isolationLevel_, isolationLevel_converter_);
    }
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @return The count of isolationLevel.
     */
    @java.lang.Override
    public int getIsolationLevelCount() {
      return isolationLevel_.size();
    }
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @param index The index of the element to return.
     * @return The isolationLevel at the given index.
     */
    @java.lang.Override
    public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
      return isolationLevel_converter_.convert(isolationLevel_.get(index));
    }
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @return A list containing the enum numeric values on the wire for isolationLevel.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
    getIsolationLevelValueList() {
      return isolationLevel_;
    }
    /**
     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of isolationLevel at the given index.
     */
    @java.lang.Override
    public int getIsolationLevelValue(int index) {
      return isolationLevel_.get(index);
    }
    private int isolationLevelMemoizedSerializedSize;

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getIsolationLevelList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(isolationLevelMemoizedSerializedSize);
      }
      for (int i = 0; i < isolationLevel_.size(); i++) {
        output.writeEnumNoTag(isolationLevel_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < isolationLevel_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(isolationLevel_.get(i));
        }
        size += dataSize;
        if (!getIsolationLevelList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }isolationLevelMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;

      if (!isolationLevel_.equals(other.isolationLevel_)) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level 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 context.ContextOuterClass.Constraint_SLA_Isolation_level parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level 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 context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Isolation_level prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Constraint_SLA_Isolation_level}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Isolation_level)
        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        isolationLevel_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Isolation_level build() {
        context.ContextOuterClass.Constraint_SLA_Isolation_level result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Isolation_level buildPartial() {
        context.ContextOuterClass.Constraint_SLA_Isolation_level result = new context.ContextOuterClass.Constraint_SLA_Isolation_level(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.isolationLevel_ = isolationLevel_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level) {
          return mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Isolation_level other) {
        if (other == context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance()) return this;
        if (!other.isolationLevel_.isEmpty()) {
          if (isolationLevel_.isEmpty()) {
            isolationLevel_ = other.isolationLevel_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureIsolationLevelIsMutable();
            isolationLevel_.addAll(other.isolationLevel_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint_SLA_Isolation_level parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Isolation_level) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<java.lang.Integer> isolationLevel_ =
        java.util.Collections.emptyList();
      private void ensureIsolationLevelIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          isolationLevel_ = new java.util.ArrayList<java.lang.Integer>(isolationLevel_);
          bitField0_ |= 0x00000001;
        }
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @return A list containing the isolationLevel.
       */
      public java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>(isolationLevel_, isolationLevel_converter_);
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @return The count of isolationLevel.
       */
      public int getIsolationLevelCount() {
        return isolationLevel_.size();
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @param index The index of the element to return.
       * @return The isolationLevel at the given index.
       */
      public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
        return isolationLevel_converter_.convert(isolationLevel_.get(index));
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @param index The index to set the value at.
       * @param value The isolationLevel to set.
       * @return This builder for chaining.
       */
      public Builder setIsolationLevel(
          int index, context.ContextOuterClass.IsolationLevelEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureIsolationLevelIsMutable();
        isolationLevel_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @param value The isolationLevel to add.
       * @return This builder for chaining.
       */
      public Builder addIsolationLevel(context.ContextOuterClass.IsolationLevelEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureIsolationLevelIsMutable();
        isolationLevel_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @param values The isolationLevel to add.
       * @return This builder for chaining.
       */
      public Builder addAllIsolationLevel(
          java.lang.Iterable<? extends context.ContextOuterClass.IsolationLevelEnum> values) {
        ensureIsolationLevelIsMutable();
        for (context.ContextOuterClass.IsolationLevelEnum value : values) {
          isolationLevel_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsolationLevel() {
        isolationLevel_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @return A list containing the enum numeric values on the wire for isolationLevel.
       */
      public java.util.List<java.lang.Integer>
      getIsolationLevelValueList() {
        return java.util.Collections.unmodifiableList(isolationLevel_);
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of isolationLevel at the given index.
       */
      public int getIsolationLevelValue(int index) {
        return isolationLevel_.get(index);
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of isolationLevel at the given index.
       * @return This builder for chaining.
       */
      public Builder setIsolationLevelValue(
          int index, int value) {
        ensureIsolationLevelIsMutable();
        isolationLevel_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @param value The enum numeric value on the wire for isolationLevel to add.
       * @return This builder for chaining.
       */
      public Builder addIsolationLevelValue(int value) {
        ensureIsolationLevelIsMutable();
        isolationLevel_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
       * @param values The enum numeric values on the wire for isolationLevel to add.
       * @return This builder for chaining.
       */
      public Builder addAllIsolationLevelValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureIsolationLevelIsMutable();
        for (int value : values) {
          isolationLevel_.add(value);
        }
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Isolation_level)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Isolation_level)
    private static final context.ContextOuterClass.Constraint_SLA_Isolation_level DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Isolation_level();
    }

    public static context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConstraintOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.Constraint)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.Constraint_Custom custom = 1;</code>
     * @return Whether the custom field is set.
     */
    boolean hasCustom();
    /**
     * <code>.context.Constraint_Custom custom = 1;</code>
     * @return The custom.
     */
    context.ContextOuterClass.Constraint_Custom getCustom();
    /**
     * <code>.context.Constraint_Custom custom = 1;</code>
     */
    context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder();

    /**
     * <code>.context.Constraint_Schedule schedule = 2;</code>
     * @return Whether the schedule field is set.
     */
    boolean hasSchedule();
    /**
     * <code>.context.Constraint_Schedule schedule = 2;</code>
     * @return The schedule.
     */
    context.ContextOuterClass.Constraint_Schedule getSchedule();
    /**
     * <code>.context.Constraint_Schedule schedule = 2;</code>
     */
    context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder();

    /**
     * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
     * @return Whether the endpointLocation field is set.
     */
    boolean hasEndpointLocation();
    /**
     * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
     * @return The endpointLocation.
     */
    context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation();
    /**
     * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
     */
    context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder();

    /**
     * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
     * @return Whether the endpointPriority field is set.
     */
    boolean hasEndpointPriority();
    /**
     * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
     * @return The endpointPriority.
     */
    context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority();
    /**
     * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
     */
    context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder();

    /**
     * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
     * @return Whether the slaCapacity field is set.
     */
    boolean hasSlaCapacity();
    /**
     * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
     * @return The slaCapacity.
     */
    context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity();
    /**
     * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
     */
    context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder();

    /**
     * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
     * @return Whether the slaLatency field is set.
     */
    boolean hasSlaLatency();
    /**
     * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
     * @return The slaLatency.
     */
    context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency();
    /**
     * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
     */
    context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder();

    /**
     * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
     * @return Whether the slaAvailability field is set.
     */
    boolean hasSlaAvailability();
    /**
     * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
     * @return The slaAvailability.
     */
    context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability();
    /**
     * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
     */
    context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder();

    /**
     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
     * @return Whether the slaIsolation field is set.
     */
    boolean hasSlaIsolation();
    /**
     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
     * @return The slaIsolation.
     */
    context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation();
    /**
     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
     */
    context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder();

    public context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
  }
  /**
   * Protobuf type {@code context.Constraint}
   */
  public static final class Constraint extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.Constraint)
      ConstraintOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Constraint.newBuilder() to construct.
    private Constraint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Constraint() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Constraint();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Constraint(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.Constraint_Custom.Builder subBuilder = null;
              if (constraintCase_ == 1) {
                subBuilder = ((context.ContextOuterClass.Constraint_Custom) constraint_).toBuilder();
              }
              constraint_ =
                  input.readMessage(context.ContextOuterClass.Constraint_Custom.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Custom) constraint_);
                constraint_ = subBuilder.buildPartial();
              }
              constraintCase_ = 1;
              break;
            }
            case 18: {
              context.ContextOuterClass.Constraint_Schedule.Builder subBuilder = null;
              if (constraintCase_ == 2) {
                subBuilder = ((context.ContextOuterClass.Constraint_Schedule) constraint_).toBuilder();
              }
              constraint_ =
                  input.readMessage(context.ContextOuterClass.Constraint_Schedule.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Schedule) constraint_);
                constraint_ = subBuilder.buildPartial();
              }
              constraintCase_ = 2;
              break;
            }
            case 26: {
              context.ContextOuterClass.Constraint_EndPointLocation.Builder subBuilder = null;
              if (constraintCase_ == 3) {
                subBuilder = ((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).toBuilder();
              }
              constraint_ =
                  input.readMessage(context.ContextOuterClass.Constraint_EndPointLocation.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
                constraint_ = subBuilder.buildPartial();
              }
              constraintCase_ = 3;
              break;
            }
            case 34: {
              context.ContextOuterClass.Constraint_EndPointPriority.Builder subBuilder = null;
              if (constraintCase_ == 4) {
                subBuilder = ((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).toBuilder();
              }
              constraint_ =
                  input.readMessage(context.ContextOuterClass.Constraint_EndPointPriority.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
                constraint_ = subBuilder.buildPartial();
              }
              constraintCase_ = 4;
              break;
            }
            case 42: {
              context.ContextOuterClass.Constraint_SLA_Capacity.Builder subBuilder = null;
              if (constraintCase_ == 5) {
                subBuilder = ((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).toBuilder();
              }
              constraint_ =
                  input.readMessage(context.ContextOuterClass.Constraint_SLA_Capacity.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
                constraint_ = subBuilder.buildPartial();
              }
              constraintCase_ = 5;
              break;
            }
            case 50: {
              context.ContextOuterClass.Constraint_SLA_Latency.Builder subBuilder = null;
              if (constraintCase_ == 6) {
                subBuilder = ((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).toBuilder();
              }
              constraint_ =
                  input.readMessage(context.ContextOuterClass.Constraint_SLA_Latency.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
                constraint_ = subBuilder.buildPartial();
              }
              constraintCase_ = 6;
              break;
            }
            case 58: {
              context.ContextOuterClass.Constraint_SLA_Availability.Builder subBuilder = null;
              if (constraintCase_ == 7) {
                subBuilder = ((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).toBuilder();
              }
              constraint_ =
                  input.readMessage(context.ContextOuterClass.Constraint_SLA_Availability.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
                constraint_ = subBuilder.buildPartial();
              }
              constraintCase_ = 7;
              break;
            }
            case 66: {
              context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder subBuilder = null;
              if (constraintCase_ == 8) {
                subBuilder = ((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).toBuilder();
              }
              constraint_ =
                  input.readMessage(context.ContextOuterClass.Constraint_SLA_Isolation_level.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
                constraint_ = subBuilder.buildPartial();
              }
              constraintCase_ = 8;
              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 context.ContextOuterClass.internal_static_context_Constraint_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
    }

    private int constraintCase_ = 0;
    private java.lang.Object constraint_;
    public enum ConstraintCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      CUSTOM(1),
      SCHEDULE(2),
      ENDPOINT_LOCATION(3),
      ENDPOINT_PRIORITY(4),
      SLA_CAPACITY(5),
      SLA_LATENCY(6),
      SLA_AVAILABILITY(7),
      SLA_ISOLATION(8),
      CONSTRAINT_NOT_SET(0);
      private final int value;
      private ConstraintCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ConstraintCase valueOf(int value) {
        return forNumber(value);
      }

      public static ConstraintCase forNumber(int value) {
        switch (value) {
          case 1: return CUSTOM;
          case 2: return SCHEDULE;
          case 3: return ENDPOINT_LOCATION;
          case 4: return ENDPOINT_PRIORITY;
          case 5: return SLA_CAPACITY;
          case 6: return SLA_LATENCY;
          case 7: return SLA_AVAILABILITY;
          case 8: return SLA_ISOLATION;
          case 0: return CONSTRAINT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ConstraintCase
    getConstraintCase() {
      return ConstraintCase.forNumber(
          constraintCase_);
    }

    public static final int CUSTOM_FIELD_NUMBER = 1;
    /**
     * <code>.context.Constraint_Custom custom = 1;</code>
     * @return Whether the custom field is set.
     */
    @java.lang.Override
    public boolean hasCustom() {
      return constraintCase_ == 1;
    }
    /**
     * <code>.context.Constraint_Custom custom = 1;</code>
     * @return The custom.
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_Custom getCustom() {
      if (constraintCase_ == 1) {
         return (context.ContextOuterClass.Constraint_Custom) constraint_;
      }
      return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
    }
    /**
     * <code>.context.Constraint_Custom custom = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
      if (constraintCase_ == 1) {
         return (context.ContextOuterClass.Constraint_Custom) constraint_;
      }
      return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
    }

    public static final int SCHEDULE_FIELD_NUMBER = 2;
    /**
     * <code>.context.Constraint_Schedule schedule = 2;</code>
     * @return Whether the schedule field is set.
     */
    @java.lang.Override
    public boolean hasSchedule() {
      return constraintCase_ == 2;
    }
    /**
     * <code>.context.Constraint_Schedule schedule = 2;</code>
     * @return The schedule.
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_Schedule getSchedule() {
      if (constraintCase_ == 2) {
         return (context.ContextOuterClass.Constraint_Schedule) constraint_;
      }
      return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
    }
    /**
     * <code>.context.Constraint_Schedule schedule = 2;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
      if (constraintCase_ == 2) {
         return (context.ContextOuterClass.Constraint_Schedule) constraint_;
      }
      return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
    }

    public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 3;
    /**
     * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
     * @return Whether the endpointLocation field is set.
     */
    @java.lang.Override
    public boolean hasEndpointLocation() {
      return constraintCase_ == 3;
    }
    /**
     * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
     * @return The endpointLocation.
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
      if (constraintCase_ == 3) {
         return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
      }
      return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
    }
    /**
     * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
      if (constraintCase_ == 3) {
         return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
      }
      return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
    }

    public static final int ENDPOINT_PRIORITY_FIELD_NUMBER = 4;
    /**
     * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
     * @return Whether the endpointPriority field is set.
     */
    @java.lang.Override
    public boolean hasEndpointPriority() {
      return constraintCase_ == 4;
    }
    /**
     * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
     * @return The endpointPriority.
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
      if (constraintCase_ == 4) {
         return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
      }
      return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
    }
    /**
     * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
      if (constraintCase_ == 4) {
         return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
      }
      return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
    }

    public static final int SLA_CAPACITY_FIELD_NUMBER = 5;
    /**
     * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
     * @return Whether the slaCapacity field is set.
     */
    @java.lang.Override
    public boolean hasSlaCapacity() {
      return constraintCase_ == 5;
    }
    /**
     * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
     * @return The slaCapacity.
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
      if (constraintCase_ == 5) {
         return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
      }
      return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
    }
    /**
     * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
      if (constraintCase_ == 5) {
         return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
      }
      return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
    }

    public static final int SLA_LATENCY_FIELD_NUMBER = 6;
    /**
     * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
     * @return Whether the slaLatency field is set.
     */
    @java.lang.Override
    public boolean hasSlaLatency() {
      return constraintCase_ == 6;
    }
    /**
     * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
     * @return The slaLatency.
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
      if (constraintCase_ == 6) {
         return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
      }
      return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
    }
    /**
     * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
      if (constraintCase_ == 6) {
         return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
      }
      return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
    }

    public static final int SLA_AVAILABILITY_FIELD_NUMBER = 7;
    /**
     * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
     * @return Whether the slaAvailability field is set.
     */
    @java.lang.Override
    public boolean hasSlaAvailability() {
      return constraintCase_ == 7;
    }
    /**
     * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
     * @return The slaAvailability.
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
      if (constraintCase_ == 7) {
         return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
      }
      return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
    }
    /**
     * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
      if (constraintCase_ == 7) {
         return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
      }
      return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
    }

    public static final int SLA_ISOLATION_FIELD_NUMBER = 8;
    /**
     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
     * @return Whether the slaIsolation field is set.
     */
    @java.lang.Override
    public boolean hasSlaIsolation() {
      return constraintCase_ == 8;
    }
    /**
     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
     * @return The slaIsolation.
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
      if (constraintCase_ == 8) {
         return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
      }
      return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
    }
    /**
     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
      if (constraintCase_ == 8) {
         return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
      }
      return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (constraintCase_ == 1) {
        output.writeMessage(1, (context.ContextOuterClass.Constraint_Custom) constraint_);
      }
      if (constraintCase_ == 2) {
        output.writeMessage(2, (context.ContextOuterClass.Constraint_Schedule) constraint_);
      }
      if (constraintCase_ == 3) {
        output.writeMessage(3, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
      }
      if (constraintCase_ == 4) {
        output.writeMessage(4, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
      }
      if (constraintCase_ == 5) {
        output.writeMessage(5, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
      }
      if (constraintCase_ == 6) {
        output.writeMessage(6, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
      }
      if (constraintCase_ == 7) {
        output.writeMessage(7, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
      }
      if (constraintCase_ == 8) {
        output.writeMessage(8, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (constraintCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (context.ContextOuterClass.Constraint_Custom) constraint_);
      }
      if (constraintCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (context.ContextOuterClass.Constraint_Schedule) constraint_);
      }
      if (constraintCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
      }
      if (constraintCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
      }
      if (constraintCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
      }
      if (constraintCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
      }
      if (constraintCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
      }
      if (constraintCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.Constraint)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.Constraint other = (context.ContextOuterClass.Constraint) obj;

      if (!getConstraintCase().equals(other.getConstraintCase())) return false;
      switch (constraintCase_) {
        case 1:
          if (!getCustom()
              .equals(other.getCustom())) return false;
          break;
        case 2:
          if (!getSchedule()
              .equals(other.getSchedule())) return false;
          break;
        case 3:
          if (!getEndpointLocation()
              .equals(other.getEndpointLocation())) return false;
          break;
        case 4:
          if (!getEndpointPriority()
              .equals(other.getEndpointPriority())) return false;
          break;
        case 5:
          if (!getSlaCapacity()
              .equals(other.getSlaCapacity())) return false;
          break;
        case 6:
          if (!getSlaLatency()
              .equals(other.getSlaLatency())) return false;
          break;
        case 7:
          if (!getSlaAvailability()
              .equals(other.getSlaAvailability())) return false;
          break;
        case 8:
          if (!getSlaIsolation()
              .equals(other.getSlaIsolation())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (constraintCase_) {
        case 1:
          hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
          hash = (53 * hash) + getCustom().hashCode();
          break;
        case 2:
          hash = (37 * hash) + SCHEDULE_FIELD_NUMBER;
          hash = (53 * hash) + getSchedule().hashCode();
          break;
        case 3:
          hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
          hash = (53 * hash) + getEndpointLocation().hashCode();
          break;
        case 4:
          hash = (37 * hash) + ENDPOINT_PRIORITY_FIELD_NUMBER;
          hash = (53 * hash) + getEndpointPriority().hashCode();
          break;
        case 5:
          hash = (37 * hash) + SLA_CAPACITY_FIELD_NUMBER;
          hash = (53 * hash) + getSlaCapacity().hashCode();
          break;
        case 6:
          hash = (37 * hash) + SLA_LATENCY_FIELD_NUMBER;
          hash = (53 * hash) + getSlaLatency().hashCode();
          break;
        case 7:
          hash = (37 * hash) + SLA_AVAILABILITY_FIELD_NUMBER;
          hash = (53 * hash) + getSlaAvailability().hashCode();
          break;
        case 8:
          hash = (37 * hash) + SLA_ISOLATION_FIELD_NUMBER;
          hash = (53 * hash) + getSlaIsolation().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.Constraint parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.Constraint parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint 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 context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint 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 context.ContextOuterClass.Constraint parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.Constraint parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.Constraint prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.Constraint}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.Constraint)
        context.ContextOuterClass.ConstraintOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
      }

      // Construct using context.ContextOuterClass.Constraint.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        constraintCase_ = 0;
        constraint_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
        return context.ContextOuterClass.Constraint.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint build() {
        context.ContextOuterClass.Constraint result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.Constraint buildPartial() {
        context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
        if (constraintCase_ == 1) {
          if (customBuilder_ == null) {
            result.constraint_ = constraint_;
          } else {
            result.constraint_ = customBuilder_.build();
          }
        }
        if (constraintCase_ == 2) {
          if (scheduleBuilder_ == null) {
            result.constraint_ = constraint_;
          } else {
            result.constraint_ = scheduleBuilder_.build();
          }
        }
        if (constraintCase_ == 3) {
          if (endpointLocationBuilder_ == null) {
            result.constraint_ = constraint_;
          } else {
            result.constraint_ = endpointLocationBuilder_.build();
          }
        }
        if (constraintCase_ == 4) {
          if (endpointPriorityBuilder_ == null) {
            result.constraint_ = constraint_;
          } else {
            result.constraint_ = endpointPriorityBuilder_.build();
          }
        }
        if (constraintCase_ == 5) {
          if (slaCapacityBuilder_ == null) {
            result.constraint_ = constraint_;
          } else {
            result.constraint_ = slaCapacityBuilder_.build();
          }
        }
        if (constraintCase_ == 6) {
          if (slaLatencyBuilder_ == null) {
            result.constraint_ = constraint_;
          } else {
            result.constraint_ = slaLatencyBuilder_.build();
          }
        }
        if (constraintCase_ == 7) {
          if (slaAvailabilityBuilder_ == null) {
            result.constraint_ = constraint_;
          } else {
            result.constraint_ = slaAvailabilityBuilder_.build();
          }
        }
        if (constraintCase_ == 8) {
          if (slaIsolationBuilder_ == null) {
            result.constraint_ = constraint_;
          } else {
            result.constraint_ = slaIsolationBuilder_.build();
          }
        }
        result.constraintCase_ = constraintCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.Constraint) {
          return mergeFrom((context.ContextOuterClass.Constraint)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.Constraint other) {
        if (other == context.ContextOuterClass.Constraint.getDefaultInstance()) return this;
        switch (other.getConstraintCase()) {
          case CUSTOM: {
            mergeCustom(other.getCustom());
            break;
          }
          case SCHEDULE: {
            mergeSchedule(other.getSchedule());
            break;
          }
          case ENDPOINT_LOCATION: {
            mergeEndpointLocation(other.getEndpointLocation());
            break;
          }
          case ENDPOINT_PRIORITY: {
            mergeEndpointPriority(other.getEndpointPriority());
            break;
          }
          case SLA_CAPACITY: {
            mergeSlaCapacity(other.getSlaCapacity());
            break;
          }
          case SLA_LATENCY: {
            mergeSlaLatency(other.getSlaLatency());
            break;
          }
          case SLA_AVAILABILITY: {
            mergeSlaAvailability(other.getSlaAvailability());
            break;
          }
          case SLA_ISOLATION: {
            mergeSlaIsolation(other.getSlaIsolation());
            break;
          }
          case CONSTRAINT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.Constraint parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.Constraint) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int constraintCase_ = 0;
      private java.lang.Object constraint_;
      public ConstraintCase
          getConstraintCase() {
        return ConstraintCase.forNumber(
            constraintCase_);
      }

      public Builder clearConstraint() {
        constraintCase_ = 0;
        constraint_ = null;
        onChanged();
        return this;
      }


      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder> customBuilder_;
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       * @return Whether the custom field is set.
       */
      @java.lang.Override
      public boolean hasCustom() {
        return constraintCase_ == 1;
      }
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       * @return The custom.
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_Custom getCustom() {
        if (customBuilder_ == null) {
          if (constraintCase_ == 1) {
            return (context.ContextOuterClass.Constraint_Custom) constraint_;
          }
          return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
        } else {
          if (constraintCase_ == 1) {
            return customBuilder_.getMessage();
          }
          return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       */
      public Builder setCustom(context.ContextOuterClass.Constraint_Custom value) {
        if (customBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          constraint_ = value;
          onChanged();
        } else {
          customBuilder_.setMessage(value);
        }
        constraintCase_ = 1;
        return this;
      }
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       */
      public Builder setCustom(
          context.ContextOuterClass.Constraint_Custom.Builder builderForValue) {
        if (customBuilder_ == null) {
          constraint_ = builderForValue.build();
          onChanged();
        } else {
          customBuilder_.setMessage(builderForValue.build());
        }
        constraintCase_ = 1;
        return this;
      }
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       */
      public Builder mergeCustom(context.ContextOuterClass.Constraint_Custom value) {
        if (customBuilder_ == null) {
          if (constraintCase_ == 1 &&
              constraint_ != context.ContextOuterClass.Constraint_Custom.getDefaultInstance()) {
            constraint_ = context.ContextOuterClass.Constraint_Custom.newBuilder((context.ContextOuterClass.Constraint_Custom) constraint_)
                .mergeFrom(value).buildPartial();
          } else {
            constraint_ = value;
          }
          onChanged();
        } else {
          if (constraintCase_ == 1) {
            customBuilder_.mergeFrom(value);
          }
          customBuilder_.setMessage(value);
        }
        constraintCase_ = 1;
        return this;
      }
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       */
      public Builder clearCustom() {
        if (customBuilder_ == null) {
          if (constraintCase_ == 1) {
            constraintCase_ = 0;
            constraint_ = null;
            onChanged();
          }
        } else {
          if (constraintCase_ == 1) {
            constraintCase_ = 0;
            constraint_ = null;
          }
          customBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       */
      public context.ContextOuterClass.Constraint_Custom.Builder getCustomBuilder() {
        return getCustomFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
        if ((constraintCase_ == 1) && (customBuilder_ != null)) {
          return customBuilder_.getMessageOrBuilder();
        } else {
          if (constraintCase_ == 1) {
            return (context.ContextOuterClass.Constraint_Custom) constraint_;
          }
          return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_Custom custom = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder> 
          getCustomFieldBuilder() {
        if (customBuilder_ == null) {
          if (!(constraintCase_ == 1)) {
            constraint_ = context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
          }
          customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder>(
                  (context.ContextOuterClass.Constraint_Custom) constraint_,
                  getParentForChildren(),
                  isClean());
          constraint_ = null;
        }
        constraintCase_ = 1;
        onChanged();;
        return customBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder> scheduleBuilder_;
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       * @return Whether the schedule field is set.
       */
      @java.lang.Override
      public boolean hasSchedule() {
        return constraintCase_ == 2;
      }
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       * @return The schedule.
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_Schedule getSchedule() {
        if (scheduleBuilder_ == null) {
          if (constraintCase_ == 2) {
            return (context.ContextOuterClass.Constraint_Schedule) constraint_;
          }
          return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
        } else {
          if (constraintCase_ == 2) {
            return scheduleBuilder_.getMessage();
          }
          return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       */
      public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule value) {
        if (scheduleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          constraint_ = value;
          onChanged();
        } else {
          scheduleBuilder_.setMessage(value);
        }
        constraintCase_ = 2;
        return this;
      }
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       */
      public Builder setSchedule(
          context.ContextOuterClass.Constraint_Schedule.Builder builderForValue) {
        if (scheduleBuilder_ == null) {
          constraint_ = builderForValue.build();
          onChanged();
        } else {
          scheduleBuilder_.setMessage(builderForValue.build());
        }
        constraintCase_ = 2;
        return this;
      }
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       */
      public Builder mergeSchedule(context.ContextOuterClass.Constraint_Schedule value) {
        if (scheduleBuilder_ == null) {
          if (constraintCase_ == 2 &&
              constraint_ != context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) {
            constraint_ = context.ContextOuterClass.Constraint_Schedule.newBuilder((context.ContextOuterClass.Constraint_Schedule) constraint_)
                .mergeFrom(value).buildPartial();
          } else {
            constraint_ = value;
          }
          onChanged();
        } else {
          if (constraintCase_ == 2) {
            scheduleBuilder_.mergeFrom(value);
          }
          scheduleBuilder_.setMessage(value);
        }
        constraintCase_ = 2;
        return this;
      }
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       */
      public Builder clearSchedule() {
        if (scheduleBuilder_ == null) {
          if (constraintCase_ == 2) {
            constraintCase_ = 0;
            constraint_ = null;
            onChanged();
          }
        } else {
          if (constraintCase_ == 2) {
            constraintCase_ = 0;
            constraint_ = null;
          }
          scheduleBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       */
      public context.ContextOuterClass.Constraint_Schedule.Builder getScheduleBuilder() {
        return getScheduleFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
        if ((constraintCase_ == 2) && (scheduleBuilder_ != null)) {
          return scheduleBuilder_.getMessageOrBuilder();
        } else {
          if (constraintCase_ == 2) {
            return (context.ContextOuterClass.Constraint_Schedule) constraint_;
          }
          return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_Schedule schedule = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder> 
          getScheduleFieldBuilder() {
        if (scheduleBuilder_ == null) {
          if (!(constraintCase_ == 2)) {
            constraint_ = context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
          }
          scheduleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder>(
                  (context.ContextOuterClass.Constraint_Schedule) constraint_,
                  getParentForChildren(),
                  isClean());
          constraint_ = null;
        }
        constraintCase_ = 2;
        onChanged();;
        return scheduleBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder> endpointLocationBuilder_;
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       * @return Whether the endpointLocation field is set.
       */
      @java.lang.Override
      public boolean hasEndpointLocation() {
        return constraintCase_ == 3;
      }
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       * @return The endpointLocation.
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
        if (endpointLocationBuilder_ == null) {
          if (constraintCase_ == 3) {
            return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
          }
          return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
        } else {
          if (constraintCase_ == 3) {
            return endpointLocationBuilder_.getMessage();
          }
          return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       */
      public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
        if (endpointLocationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          constraint_ = value;
          onChanged();
        } else {
          endpointLocationBuilder_.setMessage(value);
        }
        constraintCase_ = 3;
        return this;
      }
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       */
      public Builder setEndpointLocation(
          context.ContextOuterClass.Constraint_EndPointLocation.Builder builderForValue) {
        if (endpointLocationBuilder_ == null) {
          constraint_ = builderForValue.build();
          onChanged();
        } else {
          endpointLocationBuilder_.setMessage(builderForValue.build());
        }
        constraintCase_ = 3;
        return this;
      }
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       */
      public Builder mergeEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
        if (endpointLocationBuilder_ == null) {
          if (constraintCase_ == 3 &&
              constraint_ != context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance()) {
            constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.newBuilder((context.ContextOuterClass.Constraint_EndPointLocation) constraint_)
                .mergeFrom(value).buildPartial();
          } else {
            constraint_ = value;
          }
          onChanged();
        } else {
          if (constraintCase_ == 3) {
            endpointLocationBuilder_.mergeFrom(value);
          }
          endpointLocationBuilder_.setMessage(value);
        }
        constraintCase_ = 3;
        return this;
      }
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       */
      public Builder clearEndpointLocation() {
        if (endpointLocationBuilder_ == null) {
          if (constraintCase_ == 3) {
            constraintCase_ = 0;
            constraint_ = null;
            onChanged();
          }
        } else {
          if (constraintCase_ == 3) {
            constraintCase_ = 0;
            constraint_ = null;
          }
          endpointLocationBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       */
      public context.ContextOuterClass.Constraint_EndPointLocation.Builder getEndpointLocationBuilder() {
        return getEndpointLocationFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
        if ((constraintCase_ == 3) && (endpointLocationBuilder_ != null)) {
          return endpointLocationBuilder_.getMessageOrBuilder();
        } else {
          if (constraintCase_ == 3) {
            return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
          }
          return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_EndPointLocation endpoint_location = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder> 
          getEndpointLocationFieldBuilder() {
        if (endpointLocationBuilder_ == null) {
          if (!(constraintCase_ == 3)) {
            constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
          }
          endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder>(
                  (context.ContextOuterClass.Constraint_EndPointLocation) constraint_,
                  getParentForChildren(),
                  isClean());
          constraint_ = null;
        }
        constraintCase_ = 3;
        onChanged();;
        return endpointLocationBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder> endpointPriorityBuilder_;
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       * @return Whether the endpointPriority field is set.
       */
      @java.lang.Override
      public boolean hasEndpointPriority() {
        return constraintCase_ == 4;
      }
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       * @return The endpointPriority.
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
        if (endpointPriorityBuilder_ == null) {
          if (constraintCase_ == 4) {
            return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
          }
          return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
        } else {
          if (constraintCase_ == 4) {
            return endpointPriorityBuilder_.getMessage();
          }
          return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       */
      public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
        if (endpointPriorityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          constraint_ = value;
          onChanged();
        } else {
          endpointPriorityBuilder_.setMessage(value);
        }
        constraintCase_ = 4;
        return this;
      }
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       */
      public Builder setEndpointPriority(
          context.ContextOuterClass.Constraint_EndPointPriority.Builder builderForValue) {
        if (endpointPriorityBuilder_ == null) {
          constraint_ = builderForValue.build();
          onChanged();
        } else {
          endpointPriorityBuilder_.setMessage(builderForValue.build());
        }
        constraintCase_ = 4;
        return this;
      }
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       */
      public Builder mergeEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
        if (endpointPriorityBuilder_ == null) {
          if (constraintCase_ == 4 &&
              constraint_ != context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance()) {
            constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.newBuilder((context.ContextOuterClass.Constraint_EndPointPriority) constraint_)
                .mergeFrom(value).buildPartial();
          } else {
            constraint_ = value;
          }
          onChanged();
        } else {
          if (constraintCase_ == 4) {
            endpointPriorityBuilder_.mergeFrom(value);
          }
          endpointPriorityBuilder_.setMessage(value);
        }
        constraintCase_ = 4;
        return this;
      }
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       */
      public Builder clearEndpointPriority() {
        if (endpointPriorityBuilder_ == null) {
          if (constraintCase_ == 4) {
            constraintCase_ = 0;
            constraint_ = null;
            onChanged();
          }
        } else {
          if (constraintCase_ == 4) {
            constraintCase_ = 0;
            constraint_ = null;
          }
          endpointPriorityBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       */
      public context.ContextOuterClass.Constraint_EndPointPriority.Builder getEndpointPriorityBuilder() {
        return getEndpointPriorityFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
        if ((constraintCase_ == 4) && (endpointPriorityBuilder_ != null)) {
          return endpointPriorityBuilder_.getMessageOrBuilder();
        } else {
          if (constraintCase_ == 4) {
            return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
          }
          return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_EndPointPriority endpoint_priority = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder> 
          getEndpointPriorityFieldBuilder() {
        if (endpointPriorityBuilder_ == null) {
          if (!(constraintCase_ == 4)) {
            constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
          }
          endpointPriorityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder>(
                  (context.ContextOuterClass.Constraint_EndPointPriority) constraint_,
                  getParentForChildren(),
                  isClean());
          constraint_ = null;
        }
        constraintCase_ = 4;
        onChanged();;
        return endpointPriorityBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder> slaCapacityBuilder_;
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       * @return Whether the slaCapacity field is set.
       */
      @java.lang.Override
      public boolean hasSlaCapacity() {
        return constraintCase_ == 5;
      }
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       * @return The slaCapacity.
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
        if (slaCapacityBuilder_ == null) {
          if (constraintCase_ == 5) {
            return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
          }
          return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
        } else {
          if (constraintCase_ == 5) {
            return slaCapacityBuilder_.getMessage();
          }
          return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       */
      public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
        if (slaCapacityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          constraint_ = value;
          onChanged();
        } else {
          slaCapacityBuilder_.setMessage(value);
        }
        constraintCase_ = 5;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       */
      public Builder setSlaCapacity(
          context.ContextOuterClass.Constraint_SLA_Capacity.Builder builderForValue) {
        if (slaCapacityBuilder_ == null) {
          constraint_ = builderForValue.build();
          onChanged();
        } else {
          slaCapacityBuilder_.setMessage(builderForValue.build());
        }
        constraintCase_ = 5;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       */
      public Builder mergeSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
        if (slaCapacityBuilder_ == null) {
          if (constraintCase_ == 5 &&
              constraint_ != context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance()) {
            constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_)
                .mergeFrom(value).buildPartial();
          } else {
            constraint_ = value;
          }
          onChanged();
        } else {
          if (constraintCase_ == 5) {
            slaCapacityBuilder_.mergeFrom(value);
          }
          slaCapacityBuilder_.setMessage(value);
        }
        constraintCase_ = 5;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       */
      public Builder clearSlaCapacity() {
        if (slaCapacityBuilder_ == null) {
          if (constraintCase_ == 5) {
            constraintCase_ = 0;
            constraint_ = null;
            onChanged();
          }
        } else {
          if (constraintCase_ == 5) {
            constraintCase_ = 0;
            constraint_ = null;
          }
          slaCapacityBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       */
      public context.ContextOuterClass.Constraint_SLA_Capacity.Builder getSlaCapacityBuilder() {
        return getSlaCapacityFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
        if ((constraintCase_ == 5) && (slaCapacityBuilder_ != null)) {
          return slaCapacityBuilder_.getMessageOrBuilder();
        } else {
          if (constraintCase_ == 5) {
            return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
          }
          return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_SLA_Capacity sla_capacity = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder> 
          getSlaCapacityFieldBuilder() {
        if (slaCapacityBuilder_ == null) {
          if (!(constraintCase_ == 5)) {
            constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
          }
          slaCapacityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder>(
                  (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_,
                  getParentForChildren(),
                  isClean());
          constraint_ = null;
        }
        constraintCase_ = 5;
        onChanged();;
        return slaCapacityBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder> slaLatencyBuilder_;
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       * @return Whether the slaLatency field is set.
       */
      @java.lang.Override
      public boolean hasSlaLatency() {
        return constraintCase_ == 6;
      }
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       * @return The slaLatency.
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
        if (slaLatencyBuilder_ == null) {
          if (constraintCase_ == 6) {
            return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
          }
          return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
        } else {
          if (constraintCase_ == 6) {
            return slaLatencyBuilder_.getMessage();
          }
          return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       */
      public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
        if (slaLatencyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          constraint_ = value;
          onChanged();
        } else {
          slaLatencyBuilder_.setMessage(value);
        }
        constraintCase_ = 6;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       */
      public Builder setSlaLatency(
          context.ContextOuterClass.Constraint_SLA_Latency.Builder builderForValue) {
        if (slaLatencyBuilder_ == null) {
          constraint_ = builderForValue.build();
          onChanged();
        } else {
          slaLatencyBuilder_.setMessage(builderForValue.build());
        }
        constraintCase_ = 6;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       */
      public Builder mergeSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
        if (slaLatencyBuilder_ == null) {
          if (constraintCase_ == 6 &&
              constraint_ != context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance()) {
            constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.newBuilder((context.ContextOuterClass.Constraint_SLA_Latency) constraint_)
                .mergeFrom(value).buildPartial();
          } else {
            constraint_ = value;
          }
          onChanged();
        } else {
          if (constraintCase_ == 6) {
            slaLatencyBuilder_.mergeFrom(value);
          }
          slaLatencyBuilder_.setMessage(value);
        }
        constraintCase_ = 6;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       */
      public Builder clearSlaLatency() {
        if (slaLatencyBuilder_ == null) {
          if (constraintCase_ == 6) {
            constraintCase_ = 0;
            constraint_ = null;
            onChanged();
          }
        } else {
          if (constraintCase_ == 6) {
            constraintCase_ = 0;
            constraint_ = null;
          }
          slaLatencyBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       */
      public context.ContextOuterClass.Constraint_SLA_Latency.Builder getSlaLatencyBuilder() {
        return getSlaLatencyFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
        if ((constraintCase_ == 6) && (slaLatencyBuilder_ != null)) {
          return slaLatencyBuilder_.getMessageOrBuilder();
        } else {
          if (constraintCase_ == 6) {
            return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
          }
          return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_SLA_Latency sla_latency = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder> 
          getSlaLatencyFieldBuilder() {
        if (slaLatencyBuilder_ == null) {
          if (!(constraintCase_ == 6)) {
            constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
          }
          slaLatencyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder>(
                  (context.ContextOuterClass.Constraint_SLA_Latency) constraint_,
                  getParentForChildren(),
                  isClean());
          constraint_ = null;
        }
        constraintCase_ = 6;
        onChanged();;
        return slaLatencyBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder> slaAvailabilityBuilder_;
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       * @return Whether the slaAvailability field is set.
       */
      @java.lang.Override
      public boolean hasSlaAvailability() {
        return constraintCase_ == 7;
      }
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       * @return The slaAvailability.
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
        if (slaAvailabilityBuilder_ == null) {
          if (constraintCase_ == 7) {
            return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
          }
          return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
        } else {
          if (constraintCase_ == 7) {
            return slaAvailabilityBuilder_.getMessage();
          }
          return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       */
      public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
        if (slaAvailabilityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          constraint_ = value;
          onChanged();
        } else {
          slaAvailabilityBuilder_.setMessage(value);
        }
        constraintCase_ = 7;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       */
      public Builder setSlaAvailability(
          context.ContextOuterClass.Constraint_SLA_Availability.Builder builderForValue) {
        if (slaAvailabilityBuilder_ == null) {
          constraint_ = builderForValue.build();
          onChanged();
        } else {
          slaAvailabilityBuilder_.setMessage(builderForValue.build());
        }
        constraintCase_ = 7;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       */
      public Builder mergeSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
        if (slaAvailabilityBuilder_ == null) {
          if (constraintCase_ == 7 &&
              constraint_ != context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance()) {
            constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.newBuilder((context.ContextOuterClass.Constraint_SLA_Availability) constraint_)
                .mergeFrom(value).buildPartial();
          } else {
            constraint_ = value;
          }
          onChanged();
        } else {
          if (constraintCase_ == 7) {
            slaAvailabilityBuilder_.mergeFrom(value);
          }
          slaAvailabilityBuilder_.setMessage(value);
        }
        constraintCase_ = 7;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       */
      public Builder clearSlaAvailability() {
        if (slaAvailabilityBuilder_ == null) {
          if (constraintCase_ == 7) {
            constraintCase_ = 0;
            constraint_ = null;
            onChanged();
          }
        } else {
          if (constraintCase_ == 7) {
            constraintCase_ = 0;
            constraint_ = null;
          }
          slaAvailabilityBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       */
      public context.ContextOuterClass.Constraint_SLA_Availability.Builder getSlaAvailabilityBuilder() {
        return getSlaAvailabilityFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
        if ((constraintCase_ == 7) && (slaAvailabilityBuilder_ != null)) {
          return slaAvailabilityBuilder_.getMessageOrBuilder();
        } else {
          if (constraintCase_ == 7) {
            return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
          }
          return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_SLA_Availability sla_availability = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder> 
          getSlaAvailabilityFieldBuilder() {
        if (slaAvailabilityBuilder_ == null) {
          if (!(constraintCase_ == 7)) {
            constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
          }
          slaAvailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder>(
                  (context.ContextOuterClass.Constraint_SLA_Availability) constraint_,
                  getParentForChildren(),
                  isClean());
          constraint_ = null;
        }
        constraintCase_ = 7;
        onChanged();;
        return slaAvailabilityBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder> slaIsolationBuilder_;
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       * @return Whether the slaIsolation field is set.
       */
      @java.lang.Override
      public boolean hasSlaIsolation() {
        return constraintCase_ == 8;
      }
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       * @return The slaIsolation.
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
        if (slaIsolationBuilder_ == null) {
          if (constraintCase_ == 8) {
            return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
          }
          return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
        } else {
          if (constraintCase_ == 8) {
            return slaIsolationBuilder_.getMessage();
          }
          return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       */
      public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
        if (slaIsolationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          constraint_ = value;
          onChanged();
        } else {
          slaIsolationBuilder_.setMessage(value);
        }
        constraintCase_ = 8;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       */
      public Builder setSlaIsolation(
          context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder builderForValue) {
        if (slaIsolationBuilder_ == null) {
          constraint_ = builderForValue.build();
          onChanged();
        } else {
          slaIsolationBuilder_.setMessage(builderForValue.build());
        }
        constraintCase_ = 8;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       */
      public Builder mergeSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
        if (slaIsolationBuilder_ == null) {
          if (constraintCase_ == 8 &&
              constraint_ != context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance()) {
            constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_)
                .mergeFrom(value).buildPartial();
          } else {
            constraint_ = value;
          }
          onChanged();
        } else {
          if (constraintCase_ == 8) {
            slaIsolationBuilder_.mergeFrom(value);
          }
          slaIsolationBuilder_.setMessage(value);
        }
        constraintCase_ = 8;
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       */
      public Builder clearSlaIsolation() {
        if (slaIsolationBuilder_ == null) {
          if (constraintCase_ == 8) {
            constraintCase_ = 0;
            constraint_ = null;
            onChanged();
          }
        } else {
          if (constraintCase_ == 8) {
            constraintCase_ = 0;
            constraint_ = null;
          }
          slaIsolationBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       */
      public context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder getSlaIsolationBuilder() {
        return getSlaIsolationFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       */
      @java.lang.Override
      public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
        if ((constraintCase_ == 8) && (slaIsolationBuilder_ != null)) {
          return slaIsolationBuilder_.getMessageOrBuilder();
        } else {
          if (constraintCase_ == 8) {
            return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
          }
          return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
        }
      }
      /**
       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder> 
          getSlaIsolationFieldBuilder() {
        if (slaIsolationBuilder_ == null) {
          if (!(constraintCase_ == 8)) {
            constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
          }
          slaIsolationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder>(
                  (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_,
                  getParentForChildren(),
                  isClean());
          constraint_ = null;
        }
        constraintCase_ = 8;
        onChanged();;
        return slaIsolationBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.Constraint)
    }

    // @@protoc_insertion_point(class_scope:context.Constraint)
    private static final context.ContextOuterClass.Constraint DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint();
    }

    public static context.ContextOuterClass.Constraint getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TeraFlowControllerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.TeraFlowController)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    boolean hasContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    context.ContextOuterClass.ContextId getContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

    /**
     * <code>string ip_address = 2;</code>
     * @return The ipAddress.
     */
    java.lang.String getIpAddress();
    /**
     * <code>string ip_address = 2;</code>
     * @return The bytes for ipAddress.
     */
    com.google.protobuf.ByteString
        getIpAddressBytes();

    /**
     * <code>uint32 port = 3;</code>
     * @return The port.
     */
    int getPort();
  }
  /**
   * <pre>
   * ----- Miscellaneous -------------------------------------------------------------------------------------------------
   * </pre>
   *
   * Protobuf type {@code context.TeraFlowController}
   */
  public static final class TeraFlowController extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.TeraFlowController)
      TeraFlowControllerOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TeraFlowController.newBuilder() to construct.
    private TeraFlowController(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TeraFlowController() {
      ipAddress_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TeraFlowController();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TeraFlowController(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ContextId.Builder subBuilder = null;
              if (contextId_ != null) {
                subBuilder = contextId_.toBuilder();
              }
              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contextId_);
                contextId_ = subBuilder.buildPartial();
              }

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

              ipAddress_ = s;
              break;
            }
            case 24: {

              port_ = input.readUInt32();
              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 context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class);
    }

    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ContextId contextId_;
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    @java.lang.Override
    public boolean hasContextId() {
      return contextId_ != null;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextId getContextId() {
      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
      return getContextId();
    }

    public static final int IP_ADDRESS_FIELD_NUMBER = 2;
    private volatile java.lang.Object ipAddress_;
    /**
     * <code>string ip_address = 2;</code>
     * @return The ipAddress.
     */
    @java.lang.Override
    public java.lang.String getIpAddress() {
      java.lang.Object ref = ipAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        ipAddress_ = s;
        return s;
      }
    }
    /**
     * <code>string ip_address = 2;</code>
     * @return The bytes for ipAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIpAddressBytes() {
      java.lang.Object ref = ipAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ipAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PORT_FIELD_NUMBER = 3;
    private int port_;
    /**
     * <code>uint32 port = 3;</code>
     * @return The port.
     */
    @java.lang.Override
    public int getPort() {
      return port_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (contextId_ != null) {
        output.writeMessage(1, getContextId());
      }
      if (!getIpAddressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_);
      }
      if (port_ != 0) {
        output.writeUInt32(3, port_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (contextId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getContextId());
      }
      if (!getIpAddressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_);
      }
      if (port_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, port_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.TeraFlowController)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.TeraFlowController other = (context.ContextOuterClass.TeraFlowController) obj;

      if (hasContextId() != other.hasContextId()) return false;
      if (hasContextId()) {
        if (!getContextId()
            .equals(other.getContextId())) return false;
      }
      if (!getIpAddress()
          .equals(other.getIpAddress())) return false;
      if (getPort()
          != other.getPort()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasContextId()) {
        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getContextId().hashCode();
      }
      hash = (37 * hash) + IP_ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getIpAddress().hashCode();
      hash = (37 * hash) + PORT_FIELD_NUMBER;
      hash = (53 * hash) + getPort();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.TeraFlowController parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TeraFlowController parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TeraFlowController parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TeraFlowController parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.TeraFlowController parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TeraFlowController 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 context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TeraFlowController 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 context.ContextOuterClass.TeraFlowController parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.TeraFlowController parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.TeraFlowController prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ----- Miscellaneous -------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.TeraFlowController}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.TeraFlowController)
        context.ContextOuterClass.TeraFlowControllerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class);
      }

      // Construct using context.ContextOuterClass.TeraFlowController.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextIdBuilder_ == null) {
          contextId_ = null;
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }
        ipAddress_ = "";

        port_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() {
        return context.ContextOuterClass.TeraFlowController.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.TeraFlowController build() {
        context.ContextOuterClass.TeraFlowController result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.TeraFlowController buildPartial() {
        context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this);
        if (contextIdBuilder_ == null) {
          result.contextId_ = contextId_;
        } else {
          result.contextId_ = contextIdBuilder_.build();
        }
        result.ipAddress_ = ipAddress_;
        result.port_ = port_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.TeraFlowController) {
          return mergeFrom((context.ContextOuterClass.TeraFlowController)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.TeraFlowController other) {
        if (other == context.ContextOuterClass.TeraFlowController.getDefaultInstance()) return this;
        if (other.hasContextId()) {
          mergeContextId(other.getContextId());
        }
        if (!other.getIpAddress().isEmpty()) {
          ipAddress_ = other.ipAddress_;
          onChanged();
        }
        if (other.getPort() != 0) {
          setPort(other.getPort());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.TeraFlowController parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.TeraFlowController) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.ContextId contextId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return Whether the contextId field is set.
       */
      public boolean hasContextId() {
        return contextIdBuilder_ != null || contextId_ != null;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return The contextId.
       */
      public context.ContextOuterClass.ContextId getContextId() {
        if (contextIdBuilder_ == null) {
          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        } else {
          return contextIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextId_ = value;
          onChanged();
        } else {
          contextIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(
          context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdBuilder_ == null) {
          contextId_ = builderForValue.build();
          onChanged();
        } else {
          contextIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (contextId_ != null) {
            contextId_ =
              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
          } else {
            contextId_ = value;
          }
          onChanged();
        } else {
          contextIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder clearContextId() {
        if (contextIdBuilder_ == null) {
          contextId_ = null;
          onChanged();
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
        
        onChanged();
        return getContextIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
        if (contextIdBuilder_ != null) {
          return contextIdBuilder_.getMessageOrBuilder();
        } else {
          return contextId_ == null ?
              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
          getContextIdFieldBuilder() {
        if (contextIdBuilder_ == null) {
          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
                  getContextId(),
                  getParentForChildren(),
                  isClean());
          contextId_ = null;
        }
        return contextIdBuilder_;
      }

      private java.lang.Object ipAddress_ = "";
      /**
       * <code>string ip_address = 2;</code>
       * @return The ipAddress.
       */
      public java.lang.String getIpAddress() {
        java.lang.Object ref = ipAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ipAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string ip_address = 2;</code>
       * @return The bytes for ipAddress.
       */
      public com.google.protobuf.ByteString
          getIpAddressBytes() {
        java.lang.Object ref = ipAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ipAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string ip_address = 2;</code>
       * @param value The ipAddress to set.
       * @return This builder for chaining.
       */
      public Builder setIpAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ipAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string ip_address = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIpAddress() {
        
        ipAddress_ = getDefaultInstance().getIpAddress();
        onChanged();
        return this;
      }
      /**
       * <code>string ip_address = 2;</code>
       * @param value The bytes for ipAddress to set.
       * @return This builder for chaining.
       */
      public Builder setIpAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ipAddress_ = value;
        onChanged();
        return this;
      }

      private int port_ ;
      /**
       * <code>uint32 port = 3;</code>
       * @return The port.
       */
      @java.lang.Override
      public int getPort() {
        return port_;
      }
      /**
       * <code>uint32 port = 3;</code>
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(int value) {
        
        port_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 port = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        
        port_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.TeraFlowController)
    }

    // @@protoc_insertion_point(class_scope:context.TeraFlowController)
    private static final context.ContextOuterClass.TeraFlowController DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.TeraFlowController();
    }

    public static context.ContextOuterClass.TeraFlowController getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AuthenticationResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:context.AuthenticationResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    boolean hasContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    context.ContextOuterClass.ContextId getContextId();
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

    /**
     * <code>bool authenticated = 2;</code>
     * @return The authenticated.
     */
    boolean getAuthenticated();
  }
  /**
   * Protobuf type {@code context.AuthenticationResult}
   */
  public static final class AuthenticationResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:context.AuthenticationResult)
      AuthenticationResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AuthenticationResult.newBuilder() to construct.
    private AuthenticationResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AuthenticationResult() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AuthenticationResult();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AuthenticationResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              context.ContextOuterClass.ContextId.Builder subBuilder = null;
              if (contextId_ != null) {
                subBuilder = contextId_.toBuilder();
              }
              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(contextId_);
                contextId_ = subBuilder.buildPartial();
              }

              break;
            }
            case 16: {

              authenticated_ = input.readBool();
              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 context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
    }

    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
    private context.ContextOuterClass.ContextId contextId_;
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return Whether the contextId field is set.
     */
    @java.lang.Override
    public boolean hasContextId() {
      return contextId_ != null;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     * @return The contextId.
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextId getContextId() {
      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
    }
    /**
     * <code>.context.ContextId context_id = 1;</code>
     */
    @java.lang.Override
    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
      return getContextId();
    }

    public static final int AUTHENTICATED_FIELD_NUMBER = 2;
    private boolean authenticated_;
    /**
     * <code>bool authenticated = 2;</code>
     * @return The authenticated.
     */
    @java.lang.Override
    public boolean getAuthenticated() {
      return authenticated_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (contextId_ != null) {
        output.writeMessage(1, getContextId());
      }
      if (authenticated_ != false) {
        output.writeBool(2, authenticated_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (contextId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getContextId());
      }
      if (authenticated_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, authenticated_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) {
        return super.equals(obj);
      }
      context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj;

      if (hasContextId() != other.hasContextId()) return false;
      if (hasContextId()) {
        if (!getContextId()
            .equals(other.getContextId())) return false;
      }
      if (getAuthenticated()
          != other.getAuthenticated()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasContextId()) {
        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getContextId().hashCode();
      }
      hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getAuthenticated());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static context.ContextOuterClass.AuthenticationResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.AuthenticationResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.AuthenticationResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.AuthenticationResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static context.ContextOuterClass.AuthenticationResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.AuthenticationResult 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 context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.AuthenticationResult 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 context.ContextOuterClass.AuthenticationResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static context.ContextOuterClass.AuthenticationResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code context.AuthenticationResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:context.AuthenticationResult)
        context.ContextOuterClass.AuthenticationResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
      }

      // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (contextIdBuilder_ == null) {
          contextId_ = null;
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }
        authenticated_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
      }

      @java.lang.Override
      public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
        return context.ContextOuterClass.AuthenticationResult.getDefaultInstance();
      }

      @java.lang.Override
      public context.ContextOuterClass.AuthenticationResult build() {
        context.ContextOuterClass.AuthenticationResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public context.ContextOuterClass.AuthenticationResult buildPartial() {
        context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
        if (contextIdBuilder_ == null) {
          result.contextId_ = contextId_;
        } else {
          result.contextId_ = contextIdBuilder_.build();
        }
        result.authenticated_ = authenticated_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof context.ContextOuterClass.AuthenticationResult) {
          return mergeFrom((context.ContextOuterClass.AuthenticationResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) {
        if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance()) return this;
        if (other.hasContextId()) {
          mergeContextId(other.getContextId());
        }
        if (other.getAuthenticated() != false) {
          setAuthenticated(other.getAuthenticated());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        context.ContextOuterClass.AuthenticationResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (context.ContextOuterClass.AuthenticationResult) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private context.ContextOuterClass.ContextId contextId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return Whether the contextId field is set.
       */
      public boolean hasContextId() {
        return contextIdBuilder_ != null || contextId_ != null;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       * @return The contextId.
       */
      public context.ContextOuterClass.ContextId getContextId() {
        if (contextIdBuilder_ == null) {
          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        } else {
          return contextIdBuilder_.getMessage();
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          contextId_ = value;
          onChanged();
        } else {
          contextIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder setContextId(
          context.ContextOuterClass.ContextId.Builder builderForValue) {
        if (contextIdBuilder_ == null) {
          contextId_ = builderForValue.build();
          onChanged();
        } else {
          contextIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
        if (contextIdBuilder_ == null) {
          if (contextId_ != null) {
            contextId_ =
              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
          } else {
            contextId_ = value;
          }
          onChanged();
        } else {
          contextIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public Builder clearContextId() {
        if (contextIdBuilder_ == null) {
          contextId_ = null;
          onChanged();
        } else {
          contextId_ = null;
          contextIdBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
        
        onChanged();
        return getContextIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
        if (contextIdBuilder_ != null) {
          return contextIdBuilder_.getMessageOrBuilder();
        } else {
          return contextId_ == null ?
              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }
      }
      /**
       * <code>.context.ContextId context_id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
          getContextIdFieldBuilder() {
        if (contextIdBuilder_ == null) {
          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
                  getContextId(),
                  getParentForChildren(),
                  isClean());
          contextId_ = null;
        }
        return contextIdBuilder_;
      }

      private boolean authenticated_ ;
      /**
       * <code>bool authenticated = 2;</code>
       * @return The authenticated.
       */
      @java.lang.Override
      public boolean getAuthenticated() {
        return authenticated_;
      }
      /**
       * <code>bool authenticated = 2;</code>
       * @param value The authenticated to set.
       * @return This builder for chaining.
       */
      public Builder setAuthenticated(boolean value) {
        
        authenticated_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool authenticated = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAuthenticated() {
        
        authenticated_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:context.AuthenticationResult)
    }

    // @@protoc_insertion_point(class_scope:context.AuthenticationResult)
    private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult();
    }

    public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Empty_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Empty_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Uuid_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Uuid_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Timestamp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Timestamp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Event_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Event_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ContextId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ContextId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Context_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Context_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ContextIdList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ContextIdList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ContextList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ContextList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ContextEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ContextEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_TopologyId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_TopologyId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Topology_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Topology_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_TopologyDetails_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_TopologyDetails_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_TopologyIdList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_TopologyIdList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_TopologyList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_TopologyList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_TopologyEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_TopologyEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_DeviceId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_DeviceId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Device_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Device_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Component_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Component_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_DeviceConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_DeviceConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_DeviceIdList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_DeviceIdList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_DeviceList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_DeviceList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_DeviceEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_DeviceEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_LinkId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_LinkId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Link_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Link_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_LinkIdList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_LinkIdList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_LinkList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_LinkList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_LinkEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_LinkEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ServiceId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ServiceId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Service_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Service_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ServiceStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ServiceStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ServiceConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ServiceConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ServiceIdList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ServiceIdList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ServiceList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ServiceList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ServiceEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ServiceEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_SliceId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_SliceId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Slice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Slice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_SliceOwner_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_SliceOwner_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_SliceStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_SliceStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_SliceConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_SliceConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_SliceIdList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_SliceIdList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_SliceList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_SliceList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_SliceEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_SliceEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionSettings_L0_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionSettings_L0_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionSettings_L2_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionSettings_L2_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionSettings_L3_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionSettings_L3_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionSettings_L4_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionSettings_L4_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionSettings_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionSettings_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Connection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Connection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionIdList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionIdList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConnectionEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConnectionEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_EndPointId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_EndPointId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_EndPoint_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_EndPoint_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_EndPointName_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_EndPointName_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_EndPointIdList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_EndPointIdList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_EndPointNameList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_EndPointNameList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConfigRule_Custom_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConfigRule_Custom_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConfigRule_ACL_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConfigRule_ACL_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_ConfigRule_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_ConfigRule_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_Custom_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_Custom_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_Schedule_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_Schedule_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_GPS_Position_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_GPS_Position_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Location_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Location_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_EndPointLocation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_EndPointLocation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_EndPointPriority_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_EndPointPriority_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_SLA_Latency_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_SLA_Latency_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_SLA_Capacity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_SLA_Availability_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_SLA_Availability_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_SLA_Isolation_level_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_Constraint_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_Constraint_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_TeraFlowController_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_TeraFlowController_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_context_AuthenticationResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_context_AuthenticationResult_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" +
      "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" +
      "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" +
      "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" +
      ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" +
      ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" +
      "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" +
      "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" +
      "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" +
      "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" +
      "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" +
      "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" +
      "t.TeraFlowController\"8\n\rContextIdList\022\'\n" +
      "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" +
      "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" +
      "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" +
      "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" +
      "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" +
      "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" +
      "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" +
      "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" +
      "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." +
      "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" +
      "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" +
      "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" +
      "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" +
      "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" +
      "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" +
      "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" +
      "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" +
      "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" +
      "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" +
      "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" +
      ".Uuid\"\317\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" +
      "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" +
      "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" +
      "xt.DeviceConfig\022G\n\031device_operational_st" +
      "atus\030\005 \001(\0162$.context.DeviceOperationalSt" +
      "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" +
      "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" +
      "\007 \003(\0132\021.context.EndPoint\022%\n\tcomponent\030\010 " +
      "\003(\0132\022.context.Component\" \n\tComponent\022\023\n\013" +
      "comp_string\030\001 \003(\t\"9\n\014DeviceConfig\022)\n\014con" +
      "fig_rules\030\001 \003(\0132\023.context.ConfigRule\"5\n\014" +
      "DeviceIdList\022%\n\ndevice_ids\030\001 \003(\0132\021.conte" +
      "xt.DeviceId\".\n\nDeviceList\022 \n\007devices\030\001 \003" +
      "(\0132\017.context.Device\"\200\001\n\013DeviceEvent\022\035\n\005e" +
      "vent\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030" +
      "\002 \001(\0132\021.context.DeviceId\022,\n\rdevice_confi" +
      "g\030\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId" +
      "\022 \n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"f\n\004Li" +
      "nk\022 \n\007link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004" +
      "name\030\002 \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023." +
      "context.EndPointId\"/\n\nLinkIdList\022!\n\010link" +
      "_ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022" +
      "\034\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEve" +
      "nt\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007lin" +
      "k_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId" +
      "\022&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId" +
      "\022#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002" +
      "\n\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context." +
      "ServiceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030" +
      "\003 \001(\0162\030.context.ServiceTypeEnum\0221\n\024servi" +
      "ce_endpoint_ids\030\004 \003(\0132\023.context.EndPoint" +
      "Id\0220\n\023service_constraints\030\005 \003(\0132\023.contex" +
      "t.Constraint\022.\n\016service_status\030\006 \001(\0132\026.c" +
      "ontext.ServiceStatus\022.\n\016service_config\030\007" +
      " \001(\0132\026.context.ServiceConfig\022%\n\ttimestam" +
      "p\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSt" +
      "atus\0222\n\016service_status\030\001 \001(\0162\032.context.S" +
      "erviceStatusEnum\":\n\rServiceConfig\022)\n\014con" +
      "fig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\r" +
      "ServiceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.con" +
      "text.ServiceId\"1\n\013ServiceList\022\"\n\010service" +
      "s\030\001 \003(\0132\020.context.Service\"U\n\014ServiceEven" +
      "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022&\n\nserv" +
      "ice_id\030\002 \001(\0132\022.context.ServiceId\"T\n\007Slic" +
      "eId\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" +
      "tId\022!\n\nslice_uuid\030\002 \001(\0132\r.context.Uuid\"\240" +
      "\003\n\005Slice\022\"\n\010slice_id\030\001 \001(\0132\020.context.Sli" +
      "ceId\022\014\n\004name\030\002 \001(\t\022/\n\022slice_endpoint_ids" +
      "\030\003 \003(\0132\023.context.EndPointId\022.\n\021slice_con" +
      "straints\030\004 \003(\0132\023.context.Constraint\022-\n\021s" +
      "lice_service_ids\030\005 \003(\0132\022.context.Service" +
      "Id\022,\n\022slice_subslice_ids\030\006 \003(\0132\020.context" +
      ".SliceId\022*\n\014slice_status\030\007 \001(\0132\024.context" +
      ".SliceStatus\022*\n\014slice_config\030\010 \001(\0132\024.con" +
      "text.SliceConfig\022(\n\013slice_owner\030\t \001(\0132\023." +
      "context.SliceOwner\022%\n\ttimestamp\030\n \001(\0132\022." +
      "context.Timestamp\"E\n\nSliceOwner\022!\n\nowner" +
      "_uuid\030\001 \001(\0132\r.context.Uuid\022\024\n\014owner_stri" +
      "ng\030\002 \001(\t\"=\n\013SliceStatus\022.\n\014slice_status\030" +
      "\001 \001(\0162\030.context.SliceStatusEnum\"8\n\013Slice" +
      "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" +
      "onfigRule\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 " +
      "\003(\0132\020.context.SliceId\"+\n\tSliceList\022\036\n\006sl" +
      "ices\030\001 \003(\0132\016.context.Slice\"O\n\nSliceEvent" +
      "\022\035\n\005event\030\001 \001(\0132\016.context.Event\022\"\n\010slice" +
      "_id\030\002 \001(\0132\020.context.SliceId\"6\n\014Connectio" +
      "nId\022&\n\017connection_uuid\030\001 \001(\0132\r.context.U" +
      "uid\"2\n\025ConnectionSettings_L0\022\031\n\021lsp_symb" +
      "olic_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L" +
      "2\022\027\n\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_ad" +
      "dress\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_" +
      "id\030\004 \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_tra" +
      "ffic_class\030\006 \001(\r\"t\n\025ConnectionSettings_L" +
      "3\022\026\n\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_addr" +
      "ess\030\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(" +
      "\r\022\013\n\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022" +
      "\020\n\010src_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\tt" +
      "cp_flags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022Connecti" +
      "onSettings\022*\n\002l0\030\001 \001(\0132\036.context.Connect" +
      "ionSettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Con" +
      "nectionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context" +
      ".ConnectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.con" +
      "text.ConnectionSettings_L4\"\363\001\n\nConnectio" +
      "n\022,\n\rconnection_id\030\001 \001(\0132\025.context.Conne" +
      "ctionId\022&\n\nservice_id\030\002 \001(\0132\022.context.Se" +
      "rviceId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132" +
      "\023.context.EndPointId\022+\n\017sub_service_ids\030" +
      "\004 \003(\0132\022.context.ServiceId\022-\n\010settings\030\005 " +
      "\001(\0132\033.context.ConnectionSettings\"A\n\020Conn" +
      "ectionIdList\022-\n\016connection_ids\030\001 \003(\0132\025.c" +
      "ontext.ConnectionId\":\n\016ConnectionList\022(\n" +
      "\013connections\030\001 \003(\0132\023.context.Connection\"" +
      "^\n\017ConnectionEvent\022\035\n\005event\030\001 \001(\0132\016.cont" +
      "ext.Event\022,\n\rconnection_id\030\002 \001(\0132\025.conte" +
      "xt.ConnectionId\"\202\001\n\nEndPointId\022(\n\013topolo" +
      "gy_id\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevi" +
      "ce_id\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoi" +
      "nt_uuid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoin" +
      "t\022(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPoin" +
      "tId\022\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t" +
      "\0229\n\020kpi_sample_types\030\004 \003(\0162\037.kpi_sample_" +
      "types.KpiSampleType\022,\n\021endpoint_location" +
      "\030\005 \001(\0132\021.context.Location\"{\n\014EndPointNam" +
      "e\022(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPoin" +
      "tId\022\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_nam" +
      "e\030\003 \001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPoi" +
      "ntIdList\022)\n\014endpoint_ids\030\001 \003(\0132\023.context" +
      ".EndPointId\"A\n\020EndPointNameList\022-\n\016endpo" +
      "int_names\030\001 \003(\0132\025.context.EndPointName\"A" +
      "\n\021ConfigRule_Custom\022\024\n\014resource_key\030\001 \001(" +
      "\t\022\026\n\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_" +
      "ACL\022(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPo" +
      "intId\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet" +
      "\"\234\001\n\nConfigRule\022)\n\006action\030\001 \001(\0162\031.contex" +
      "t.ConfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.con" +
      "text.ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027." +
      "context.ConfigRule_ACLH\000B\r\n\013config_rule\"" +
      "F\n\021Constraint_Custom\022\027\n\017constraint_type\030" +
      "\001 \001(\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Const" +
      "raint_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022" +
      "\025\n\rduration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020" +
      "\n\010latitude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010L" +
      "ocation\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_positio" +
      "n\030\002 \001(\0132\025.context.GPS_PositionH\000B\n\n\010loca" +
      "tion\"l\n\033Constraint_EndPointLocation\022(\n\013e" +
      "ndpoint_id\030\001 \001(\0132\023.context.EndPointId\022#\n" +
      "\010location\030\002 \001(\0132\021.context.Location\"Y\n\033Co" +
      "nstraint_EndPointPriority\022(\n\013endpoint_id" +
      "\030\001 \001(\0132\023.context.EndPointId\022\020\n\010priority\030" +
      "\002 \001(\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_l" +
      "atency_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capaci" +
      "ty\022\025\n\rcapacity_gbps\030\001 \001(\002\"M\n\033Constraint_" +
      "SLA_Availability\022\032\n\022num_disjoint_paths\030\001" +
      " \001(\r\022\022\n\nall_active\030\002 \001(\010\"V\n\036Constraint_S" +
      "LA_Isolation_level\0224\n\017isolation_level\030\001 " +
      "\003(\0162\033.context.IsolationLevelEnum\"\366\003\n\nCon" +
      "straint\022,\n\006custom\030\001 \001(\0132\032.context.Constr" +
      "aint_CustomH\000\0220\n\010schedule\030\002 \001(\0132\034.contex" +
      "t.Constraint_ScheduleH\000\022A\n\021endpoint_loca" +
      "tion\030\003 \001(\0132$.context.Constraint_EndPoint" +
      "LocationH\000\022A\n\021endpoint_priority\030\004 \001(\0132$." +
      "context.Constraint_EndPointPriorityH\000\0228\n" +
      "\014sla_capacity\030\005 \001(\0132 .context.Constraint" +
      "_SLA_CapacityH\000\0226\n\013sla_latency\030\006 \001(\0132\037.c" +
      "ontext.Constraint_SLA_LatencyH\000\022@\n\020sla_a" +
      "vailability\030\007 \001(\0132$.context.Constraint_S" +
      "LA_AvailabilityH\000\022@\n\rsla_isolation\030\010 \001(\013" +
      "2\'.context.Constraint_SLA_Isolation_leve" +
      "lH\000B\014\n\nconstraint\"^\n\022TeraFlowController\022" +
      "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" +
      "\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024Aut" +
      "henticationResult\022&\n\ncontext_id\030\001 \001(\0132\022." +
      "context.ContextId\022\025\n\rauthenticated\030\002 \001(\010" +
      "*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEFINED" +
      "\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UP" +
      "DATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\332\001\n\020DeviceD" +
      "riverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n" +
      "\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIV" +
      "ER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022" +
      "&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOGY\020\004\022" +
      "\033\n\027DEVICEDRIVER_ONF_TR_352\020\005\022\023\n\017DEVICEDR" +
      "IVER_XR\020\006*\217\001\n\033DeviceOperationalStatusEnu" +
      "m\022%\n!DEVICEOPERATIONALSTATUS_UNDEFINED\020\000" +
      "\022$\n DEVICEOPERATIONALSTATUS_DISABLED\020\001\022#" +
      "\n\037DEVICEOPERATIONALSTATUS_ENABLED\020\002*\201\001\n\017" +
      "ServiceTypeEnum\022\027\n\023SERVICETYPE_UNKNOWN\020\000" +
      "\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERVICETYPE_L2" +
      "NM\020\002\022)\n%SERVICETYPE_TAPI_CONNECTIVITY_SE" +
      "RVICE\020\003*\250\001\n\021ServiceStatusEnum\022\033\n\027SERVICE" +
      "STATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_PLAN" +
      "NED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022!\n\035SERVI" +
      "CESTATUS_PENDING_REMOVAL\020\003\022\036\n\032SERVICESTA" +
      "TUS_SLA_VIOLATED\020\004*\251\001\n\017SliceStatusEnum\022\031" +
      "\n\025SLICESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS" +
      "_PLANNED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLIC" +
      "ESTATUS_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004" +
      "\022\034\n\030SLICESTATUS_SLA_VIOLATED\020\005*]\n\020Config" +
      "ActionEnum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024" +
      "\n\020CONFIGACTION_SET\020\001\022\027\n\023CONFIGACTION_DEL" +
      "ETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO_ISOLA" +
      "TION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021LOGICA" +
      "L_ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION\020\003\022\035\n\031" +
      "PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHYSICAL_" +
      "NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RESOURCE_" +
      "ISOLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_ISOLATI" +
      "ON\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\353\024\n\016ContextS" +
      "ervice\022:\n\016ListContextIds\022\016.context.Empty" +
      "\032\026.context.ContextIdList\"\000\0226\n\014ListContex" +
      "ts\022\016.context.Empty\032\024.context.ContextList" +
      "\"\000\0224\n\nGetContext\022\022.context.ContextId\032\020.c" +
      "ontext.Context\"\000\0224\n\nSetContext\022\020.context" +
      ".Context\032\022.context.ContextId\"\000\0225\n\rRemove" +
      "Context\022\022.context.ContextId\032\016.context.Em" +
      "pty\"\000\022=\n\020GetContextEvents\022\016.context.Empt" +
      "y\032\025.context.ContextEvent\"\0000\001\022@\n\017ListTopo" +
      "logyIds\022\022.context.ContextId\032\027.context.To" +
      "pologyIdList\"\000\022=\n\016ListTopologies\022\022.conte" +
      "xt.ContextId\032\025.context.TopologyList\"\000\0227\n" +
      "\013GetTopology\022\023.context.TopologyId\032\021.cont" +
      "ext.Topology\"\000\022E\n\022GetTopologyDetails\022\023.c" +
      "ontext.TopologyId\032\030.context.TopologyDeta" +
      "ils\"\000\0227\n\013SetTopology\022\021.context.Topology\032" +
      "\023.context.TopologyId\"\000\0227\n\016RemoveTopology" +
      "\022\023.context.TopologyId\032\016.context.Empty\"\000\022" +
      "?\n\021GetTopologyEvents\022\016.context.Empty\032\026.c" +
      "ontext.TopologyEvent\"\0000\001\0228\n\rListDeviceId" +
      "s\022\016.context.Empty\032\025.context.DeviceIdList" +
      "\"\000\0224\n\013ListDevices\022\016.context.Empty\032\023.cont" +
      "ext.DeviceList\"\000\0221\n\tGetDevice\022\021.context." +
      "DeviceId\032\017.context.Device\"\000\0221\n\tSetDevice" +
      "\022\017.context.Device\032\021.context.DeviceId\"\000\0223" +
      "\n\014RemoveDevice\022\021.context.DeviceId\032\016.cont" +
      "ext.Empty\"\000\022;\n\017GetDeviceEvents\022\016.context" +
      ".Empty\032\024.context.DeviceEvent\"\0000\001\022I\n\021List" +
      "EndPointNames\022\027.context.EndPointIdList\032\031" +
      ".context.EndPointNameList\"\000\0224\n\013ListLinkI" +
      "ds\022\016.context.Empty\032\023.context.LinkIdList\"" +
      "\000\0220\n\tListLinks\022\016.context.Empty\032\021.context" +
      ".LinkList\"\000\022+\n\007GetLink\022\017.context.LinkId\032" +
      "\r.context.Link\"\000\022+\n\007SetLink\022\r.context.Li" +
      "nk\032\017.context.LinkId\"\000\022/\n\nRemoveLink\022\017.co" +
      "ntext.LinkId\032\016.context.Empty\"\000\0227\n\rGetLin" +
      "kEvents\022\016.context.Empty\032\022.context.LinkEv" +
      "ent\"\0000\001\022>\n\016ListServiceIds\022\022.context.Cont" +
      "extId\032\026.context.ServiceIdList\"\000\022:\n\014ListS" +
      "ervices\022\022.context.ContextId\032\024.context.Se" +
      "rviceList\"\000\0224\n\nGetService\022\022.context.Serv" +
      "iceId\032\020.context.Service\"\000\0224\n\nSetService\022" +
      "\020.context.Service\032\022.context.ServiceId\"\000\022" +
      "6\n\014UnsetService\022\020.context.Service\032\022.cont" +
      "ext.ServiceId\"\000\0225\n\rRemoveService\022\022.conte" +
      "xt.ServiceId\032\016.context.Empty\"\000\022=\n\020GetSer" +
      "viceEvents\022\016.context.Empty\032\025.context.Ser" +
      "viceEvent\"\0000\001\022:\n\014ListSliceIds\022\022.context." +
      "ContextId\032\024.context.SliceIdList\"\000\0226\n\nLis" +
      "tSlices\022\022.context.ContextId\032\022.context.Sl" +
      "iceList\"\000\022.\n\010GetSlice\022\020.context.SliceId\032" +
      "\016.context.Slice\"\000\022.\n\010SetSlice\022\016.context." +
      "Slice\032\020.context.SliceId\"\000\0220\n\nUnsetSlice\022" +
      "\016.context.Slice\032\020.context.SliceId\"\000\0221\n\013R" +
      "emoveSlice\022\020.context.SliceId\032\016.context.E" +
      "mpty\"\000\0229\n\016GetSliceEvents\022\016.context.Empty" +
      "\032\023.context.SliceEvent\"\0000\001\022D\n\021ListConnect" +
      "ionIds\022\022.context.ServiceId\032\031.context.Con" +
      "nectionIdList\"\000\022@\n\017ListConnections\022\022.con" +
      "text.ServiceId\032\027.context.ConnectionList\"" +
      "\000\022=\n\rGetConnection\022\025.context.ConnectionI" +
      "d\032\023.context.Connection\"\000\022=\n\rSetConnectio" +
      "n\022\023.context.Connection\032\025.context.Connect" +
      "ionId\"\000\022;\n\020RemoveConnection\022\025.context.Co" +
      "nnectionId\032\016.context.Empty\"\000\022C\n\023GetConne" +
      "ctionEvents\022\016.context.Empty\032\030.context.Co" +
      "nnectionEvent\"\0000\001b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          acl.Acl.getDescriptor(),
          kpi_sample_types.KpiSampleTypes.getDescriptor(),
        });
    internal_static_context_Empty_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_context_Empty_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Empty_descriptor,
        new java.lang.String[] { });
    internal_static_context_Uuid_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_context_Uuid_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Uuid_descriptor,
        new java.lang.String[] { "Uuid", });
    internal_static_context_Timestamp_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_context_Timestamp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Timestamp_descriptor,
        new java.lang.String[] { "Timestamp", });
    internal_static_context_Event_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_context_Event_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Event_descriptor,
        new java.lang.String[] { "Timestamp", "EventType", });
    internal_static_context_ContextId_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_context_ContextId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ContextId_descriptor,
        new java.lang.String[] { "ContextUuid", });
    internal_static_context_Context_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_context_Context_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Context_descriptor,
        new java.lang.String[] { "ContextId", "Name", "TopologyIds", "ServiceIds", "SliceIds", "Controller", });
    internal_static_context_ContextIdList_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_context_ContextIdList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ContextIdList_descriptor,
        new java.lang.String[] { "ContextIds", });
    internal_static_context_ContextList_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_context_ContextList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ContextList_descriptor,
        new java.lang.String[] { "Contexts", });
    internal_static_context_ContextEvent_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_context_ContextEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ContextEvent_descriptor,
        new java.lang.String[] { "Event", "ContextId", });
    internal_static_context_TopologyId_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_context_TopologyId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_TopologyId_descriptor,
        new java.lang.String[] { "ContextId", "TopologyUuid", });
    internal_static_context_Topology_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_context_Topology_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Topology_descriptor,
        new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds", });
    internal_static_context_TopologyDetails_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_context_TopologyDetails_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_TopologyDetails_descriptor,
        new java.lang.String[] { "TopologyId", "Name", "Devices", "Links", });
    internal_static_context_TopologyIdList_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_context_TopologyIdList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_TopologyIdList_descriptor,
        new java.lang.String[] { "TopologyIds", });
    internal_static_context_TopologyList_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_context_TopologyList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_TopologyList_descriptor,
        new java.lang.String[] { "Topologies", });
    internal_static_context_TopologyEvent_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_context_TopologyEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_TopologyEvent_descriptor,
        new java.lang.String[] { "Event", "TopologyId", });
    internal_static_context_DeviceId_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_context_DeviceId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_DeviceId_descriptor,
        new java.lang.String[] { "DeviceUuid", });
    internal_static_context_Device_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_context_Device_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Device_descriptor,
        new java.lang.String[] { "DeviceId", "Name", "DeviceType", "DeviceConfig", "DeviceOperationalStatus", "DeviceDrivers", "DeviceEndpoints", "Component", });
    internal_static_context_Component_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_context_Component_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Component_descriptor,
        new java.lang.String[] { "CompString", });
    internal_static_context_DeviceConfig_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_context_DeviceConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_DeviceConfig_descriptor,
        new java.lang.String[] { "ConfigRules", });
    internal_static_context_DeviceIdList_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_context_DeviceIdList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_DeviceIdList_descriptor,
        new java.lang.String[] { "DeviceIds", });
    internal_static_context_DeviceList_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_context_DeviceList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_DeviceList_descriptor,
        new java.lang.String[] { "Devices", });
    internal_static_context_DeviceEvent_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_context_DeviceEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_DeviceEvent_descriptor,
        new java.lang.String[] { "Event", "DeviceId", "DeviceConfig", });
    internal_static_context_LinkId_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_context_LinkId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_LinkId_descriptor,
        new java.lang.String[] { "LinkUuid", });
    internal_static_context_Link_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_context_Link_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Link_descriptor,
        new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", });
    internal_static_context_LinkIdList_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_context_LinkIdList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_LinkIdList_descriptor,
        new java.lang.String[] { "LinkIds", });
    internal_static_context_LinkList_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_context_LinkList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_LinkList_descriptor,
        new java.lang.String[] { "Links", });
    internal_static_context_LinkEvent_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_context_LinkEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_LinkEvent_descriptor,
        new java.lang.String[] { "Event", "LinkId", });
    internal_static_context_ServiceId_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_context_ServiceId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ServiceId_descriptor,
        new java.lang.String[] { "ContextId", "ServiceUuid", });
    internal_static_context_Service_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_context_Service_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Service_descriptor,
        new java.lang.String[] { "ServiceId", "Name", "ServiceType", "ServiceEndpointIds", "ServiceConstraints", "ServiceStatus", "ServiceConfig", "Timestamp", });
    internal_static_context_ServiceStatus_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_context_ServiceStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ServiceStatus_descriptor,
        new java.lang.String[] { "ServiceStatus", });
    internal_static_context_ServiceConfig_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_context_ServiceConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ServiceConfig_descriptor,
        new java.lang.String[] { "ConfigRules", });
    internal_static_context_ServiceIdList_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_context_ServiceIdList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ServiceIdList_descriptor,
        new java.lang.String[] { "ServiceIds", });
    internal_static_context_ServiceList_descriptor =
      getDescriptor().getMessageTypes().get(32);
    internal_static_context_ServiceList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ServiceList_descriptor,
        new java.lang.String[] { "Services", });
    internal_static_context_ServiceEvent_descriptor =
      getDescriptor().getMessageTypes().get(33);
    internal_static_context_ServiceEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ServiceEvent_descriptor,
        new java.lang.String[] { "Event", "ServiceId", });
    internal_static_context_SliceId_descriptor =
      getDescriptor().getMessageTypes().get(34);
    internal_static_context_SliceId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_SliceId_descriptor,
        new java.lang.String[] { "ContextId", "SliceUuid", });
    internal_static_context_Slice_descriptor =
      getDescriptor().getMessageTypes().get(35);
    internal_static_context_Slice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Slice_descriptor,
        new java.lang.String[] { "SliceId", "Name", "SliceEndpointIds", "SliceConstraints", "SliceServiceIds", "SliceSubsliceIds", "SliceStatus", "SliceConfig", "SliceOwner", "Timestamp", });
    internal_static_context_SliceOwner_descriptor =
      getDescriptor().getMessageTypes().get(36);
    internal_static_context_SliceOwner_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_SliceOwner_descriptor,
        new java.lang.String[] { "OwnerUuid", "OwnerString", });
    internal_static_context_SliceStatus_descriptor =
      getDescriptor().getMessageTypes().get(37);
    internal_static_context_SliceStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_SliceStatus_descriptor,
        new java.lang.String[] { "SliceStatus", });
    internal_static_context_SliceConfig_descriptor =
      getDescriptor().getMessageTypes().get(38);
    internal_static_context_SliceConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_SliceConfig_descriptor,
        new java.lang.String[] { "ConfigRules", });
    internal_static_context_SliceIdList_descriptor =
      getDescriptor().getMessageTypes().get(39);
    internal_static_context_SliceIdList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_SliceIdList_descriptor,
        new java.lang.String[] { "SliceIds", });
    internal_static_context_SliceList_descriptor =
      getDescriptor().getMessageTypes().get(40);
    internal_static_context_SliceList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_SliceList_descriptor,
        new java.lang.String[] { "Slices", });
    internal_static_context_SliceEvent_descriptor =
      getDescriptor().getMessageTypes().get(41);
    internal_static_context_SliceEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_SliceEvent_descriptor,
        new java.lang.String[] { "Event", "SliceId", });
    internal_static_context_ConnectionId_descriptor =
      getDescriptor().getMessageTypes().get(42);
    internal_static_context_ConnectionId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionId_descriptor,
        new java.lang.String[] { "ConnectionUuid", });
    internal_static_context_ConnectionSettings_L0_descriptor =
      getDescriptor().getMessageTypes().get(43);
    internal_static_context_ConnectionSettings_L0_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionSettings_L0_descriptor,
        new java.lang.String[] { "LspSymbolicName", });
    internal_static_context_ConnectionSettings_L2_descriptor =
      getDescriptor().getMessageTypes().get(44);
    internal_static_context_ConnectionSettings_L2_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionSettings_L2_descriptor,
        new java.lang.String[] { "SrcMacAddress", "DstMacAddress", "EtherType", "VlanId", "MplsLabel", "MplsTrafficClass", });
    internal_static_context_ConnectionSettings_L3_descriptor =
      getDescriptor().getMessageTypes().get(45);
    internal_static_context_ConnectionSettings_L3_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionSettings_L3_descriptor,
        new java.lang.String[] { "SrcIpAddress", "DstIpAddress", "Dscp", "Protocol", "Ttl", });
    internal_static_context_ConnectionSettings_L4_descriptor =
      getDescriptor().getMessageTypes().get(46);
    internal_static_context_ConnectionSettings_L4_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionSettings_L4_descriptor,
        new java.lang.String[] { "SrcPort", "DstPort", "TcpFlags", "Ttl", });
    internal_static_context_ConnectionSettings_descriptor =
      getDescriptor().getMessageTypes().get(47);
    internal_static_context_ConnectionSettings_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionSettings_descriptor,
        new java.lang.String[] { "L0", "L2", "L3", "L4", });
    internal_static_context_Connection_descriptor =
      getDescriptor().getMessageTypes().get(48);
    internal_static_context_Connection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Connection_descriptor,
        new java.lang.String[] { "ConnectionId", "ServiceId", "PathHopsEndpointIds", "SubServiceIds", "Settings", });
    internal_static_context_ConnectionIdList_descriptor =
      getDescriptor().getMessageTypes().get(49);
    internal_static_context_ConnectionIdList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionIdList_descriptor,
        new java.lang.String[] { "ConnectionIds", });
    internal_static_context_ConnectionList_descriptor =
      getDescriptor().getMessageTypes().get(50);
    internal_static_context_ConnectionList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionList_descriptor,
        new java.lang.String[] { "Connections", });
    internal_static_context_ConnectionEvent_descriptor =
      getDescriptor().getMessageTypes().get(51);
    internal_static_context_ConnectionEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConnectionEvent_descriptor,
        new java.lang.String[] { "Event", "ConnectionId", });
    internal_static_context_EndPointId_descriptor =
      getDescriptor().getMessageTypes().get(52);
    internal_static_context_EndPointId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_EndPointId_descriptor,
        new java.lang.String[] { "TopologyId", "DeviceId", "EndpointUuid", });
    internal_static_context_EndPoint_descriptor =
      getDescriptor().getMessageTypes().get(53);
    internal_static_context_EndPoint_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_EndPoint_descriptor,
        new java.lang.String[] { "EndpointId", "Name", "EndpointType", "KpiSampleTypes", "EndpointLocation", });
    internal_static_context_EndPointName_descriptor =
      getDescriptor().getMessageTypes().get(54);
    internal_static_context_EndPointName_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_EndPointName_descriptor,
        new java.lang.String[] { "EndpointId", "DeviceName", "EndpointName", "EndpointType", });
    internal_static_context_EndPointIdList_descriptor =
      getDescriptor().getMessageTypes().get(55);
    internal_static_context_EndPointIdList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_EndPointIdList_descriptor,
        new java.lang.String[] { "EndpointIds", });
    internal_static_context_EndPointNameList_descriptor =
      getDescriptor().getMessageTypes().get(56);
    internal_static_context_EndPointNameList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_EndPointNameList_descriptor,
        new java.lang.String[] { "EndpointNames", });
    internal_static_context_ConfigRule_Custom_descriptor =
      getDescriptor().getMessageTypes().get(57);
    internal_static_context_ConfigRule_Custom_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConfigRule_Custom_descriptor,
        new java.lang.String[] { "ResourceKey", "ResourceValue", });
    internal_static_context_ConfigRule_ACL_descriptor =
      getDescriptor().getMessageTypes().get(58);
    internal_static_context_ConfigRule_ACL_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConfigRule_ACL_descriptor,
        new java.lang.String[] { "EndpointId", "RuleSet", });
    internal_static_context_ConfigRule_descriptor =
      getDescriptor().getMessageTypes().get(59);
    internal_static_context_ConfigRule_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_ConfigRule_descriptor,
        new java.lang.String[] { "Action", "Custom", "Acl", "ConfigRule", });
    internal_static_context_Constraint_Custom_descriptor =
      getDescriptor().getMessageTypes().get(60);
    internal_static_context_Constraint_Custom_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_Custom_descriptor,
        new java.lang.String[] { "ConstraintType", "ConstraintValue", });
    internal_static_context_Constraint_Schedule_descriptor =
      getDescriptor().getMessageTypes().get(61);
    internal_static_context_Constraint_Schedule_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_Schedule_descriptor,
        new java.lang.String[] { "StartTimestamp", "DurationDays", });
    internal_static_context_GPS_Position_descriptor =
      getDescriptor().getMessageTypes().get(62);
    internal_static_context_GPS_Position_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_GPS_Position_descriptor,
        new java.lang.String[] { "Latitude", "Longitude", });
    internal_static_context_Location_descriptor =
      getDescriptor().getMessageTypes().get(63);
    internal_static_context_Location_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Location_descriptor,
        new java.lang.String[] { "Region", "GpsPosition", "Location", });
    internal_static_context_Constraint_EndPointLocation_descriptor =
      getDescriptor().getMessageTypes().get(64);
    internal_static_context_Constraint_EndPointLocation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_EndPointLocation_descriptor,
        new java.lang.String[] { "EndpointId", "Location", });
    internal_static_context_Constraint_EndPointPriority_descriptor =
      getDescriptor().getMessageTypes().get(65);
    internal_static_context_Constraint_EndPointPriority_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_EndPointPriority_descriptor,
        new java.lang.String[] { "EndpointId", "Priority", });
    internal_static_context_Constraint_SLA_Latency_descriptor =
      getDescriptor().getMessageTypes().get(66);
    internal_static_context_Constraint_SLA_Latency_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_SLA_Latency_descriptor,
        new java.lang.String[] { "E2ELatencyMs", });
    internal_static_context_Constraint_SLA_Capacity_descriptor =
      getDescriptor().getMessageTypes().get(67);
    internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_SLA_Capacity_descriptor,
        new java.lang.String[] { "CapacityGbps", });
    internal_static_context_Constraint_SLA_Availability_descriptor =
      getDescriptor().getMessageTypes().get(68);
    internal_static_context_Constraint_SLA_Availability_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_SLA_Availability_descriptor,
        new java.lang.String[] { "NumDisjointPaths", "AllActive", });
    internal_static_context_Constraint_SLA_Isolation_level_descriptor =
      getDescriptor().getMessageTypes().get(69);
    internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_SLA_Isolation_level_descriptor,
        new java.lang.String[] { "IsolationLevel", });
    internal_static_context_Constraint_descriptor =
      getDescriptor().getMessageTypes().get(70);
    internal_static_context_Constraint_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_Constraint_descriptor,
        new java.lang.String[] { "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Constraint", });
    internal_static_context_TeraFlowController_descriptor =
      getDescriptor().getMessageTypes().get(71);
    internal_static_context_TeraFlowController_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_TeraFlowController_descriptor,
        new java.lang.String[] { "ContextId", "IpAddress", "Port", });
    internal_static_context_AuthenticationResult_descriptor =
      getDescriptor().getMessageTypes().get(72);
    internal_static_context_AuthenticationResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_context_AuthenticationResult_descriptor,
        new java.lang.String[] { "ContextId", "Authenticated", });
    acl.Acl.getDescriptor();
    kpi_sample_types.KpiSampleTypes.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
