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

package nodomain.freeyourgadget.gadgetbridge.proto.igpsport;

public final class AlgGmData {
  private AlgGmData() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  /**
   * Protobuf enum {@code LIB_GM_OPERATE_TYPE}
   */
  public enum LIB_GM_OPERATE_TYPE
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <code>LIB_GM_OPERATE_TYPE_INVALID = 1;</code>
     */
    LIB_GM_OPERATE_TYPE_INVALID(1),
    /**
     * <code>LIB_GM_OPERATE_TYPE_GET = 2;</code>
     */
    LIB_GM_OPERATE_TYPE_GET(2),
    ;

    /**
     * <code>LIB_GM_OPERATE_TYPE_INVALID = 1;</code>
     */
    public static final int LIB_GM_OPERATE_TYPE_INVALID_VALUE = 1;
    /**
     * <code>LIB_GM_OPERATE_TYPE_GET = 2;</code>
     */
    public static final int LIB_GM_OPERATE_TYPE_GET_VALUE = 2;


    @java.lang.Override
    public final int getNumber() {
      return 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 LIB_GM_OPERATE_TYPE valueOf(int value) {
      return forNumber(value);
    }

    public static LIB_GM_OPERATE_TYPE forNumber(int value) {
      switch (value) {
        case 1: return LIB_GM_OPERATE_TYPE_INVALID;
        case 2: return LIB_GM_OPERATE_TYPE_GET;
        default: return null;
      }
    }

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

    public static com.google.protobuf.Internal.EnumVerifier 
        internalGetVerifier() {
      return LIB_GM_OPERATE_TYPEVerifier.INSTANCE;
    }

    private static final class LIB_GM_OPERATE_TYPEVerifier implements 
         com.google.protobuf.Internal.EnumVerifier { 
            static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new LIB_GM_OPERATE_TYPEVerifier();
            @java.lang.Override
            public boolean isInRange(int number) {
              return LIB_GM_OPERATE_TYPE.forNumber(number) != null;
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:LIB_GM_OPERATE_TYPE)
  }

  public interface pb_gm_statistical_outputsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb_gm_statistical_outputs)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required uint32 start_time = 1;</code>
     * @return Whether the startTime field is set.
     */
    boolean hasStartTime();
    /**
     * <code>required uint32 start_time = 1;</code>
     * @return The startTime.
     */
    int getStartTime();

    /**
     * <code>required uint32 end_time = 2;</code>
     * @return Whether the endTime field is set.
     */
    boolean hasEndTime();
    /**
     * <code>required uint32 end_time = 2;</code>
     * @return The endTime.
     */
    int getEndTime();

    /**
     * <code>required int32 recoveryTime = 3;</code>
     * @return Whether the recoveryTime field is set.
     */
    boolean hasRecoveryTime();
    /**
     * <code>required int32 recoveryTime = 3;</code>
     * @return The recoveryTime.
     */
    int getRecoveryTime();

    /**
     * <code>required uint32 stamina_level = 4;</code>
     * @return Whether the staminaLevel field is set.
     */
    boolean hasStaminaLevel();
    /**
     * <code>required uint32 stamina_level = 4;</code>
     * @return The staminaLevel.
     */
    int getStaminaLevel();

    /**
     * <code>required uint32 power_ability = 5;</code>
     * @return Whether the powerAbility field is set.
     */
    boolean hasPowerAbility();
    /**
     * <code>required uint32 power_ability = 5;</code>
     * @return The powerAbility.
     */
    int getPowerAbility();

    /**
     * <code>required uint32 anaerobic_ability = 6;</code>
     * @return Whether the anaerobicAbility field is set.
     */
    boolean hasAnaerobicAbility();
    /**
     * <code>required uint32 anaerobic_ability = 6;</code>
     * @return The anaerobicAbility.
     */
    int getAnaerobicAbility();

    /**
     * <code>required uint32 aerobic_power_ability = 7;</code>
     * @return Whether the aerobicPowerAbility field is set.
     */
    boolean hasAerobicPowerAbility();
    /**
     * <code>required uint32 aerobic_power_ability = 7;</code>
     * @return The aerobicPowerAbility.
     */
    int getAerobicPowerAbility();

    /**
     * <code>required uint32 aerobic_abiltiy = 8;</code>
     * @return Whether the aerobicAbiltiy field is set.
     */
    boolean hasAerobicAbiltiy();
    /**
     * <code>required uint32 aerobic_abiltiy = 8;</code>
     * @return The aerobicAbiltiy.
     */
    int getAerobicAbiltiy();

    /**
     * <code>required uint32 endurance_abiltiy = 9;</code>
     * @return Whether the enduranceAbiltiy field is set.
     */
    boolean hasEnduranceAbiltiy();
    /**
     * <code>required uint32 endurance_abiltiy = 9;</code>
     * @return The enduranceAbiltiy.
     */
    int getEnduranceAbiltiy();

    /**
     * <code>required uint32 ultra_endurance_ability = 10;</code>
     * @return Whether the ultraEnduranceAbility field is set.
     */
    boolean hasUltraEnduranceAbility();
    /**
     * <code>required uint32 ultra_endurance_ability = 10;</code>
     * @return The ultraEnduranceAbility.
     */
    int getUltraEnduranceAbility();

    /**
     * <code>required uint32 VO2max = 11;</code>
     * @return Whether the vO2max field is set.
     */
    boolean hasVO2Max();
    /**
     * <code>required uint32 VO2max = 11;</code>
     * @return The vO2max.
     */
    int getVO2Max();

    /**
     * <code>required uint32 FTP = 12;</code>
     * @return Whether the fTP field is set.
     */
    boolean hasFTP();
    /**
     * <code>required uint32 FTP = 12;</code>
     * @return The fTP.
     */
    int getFTP();

    /**
     * <code>required uint32 PWR = 13;</code>
     * @return Whether the pWR field is set.
     */
    boolean hasPWR();
    /**
     * <code>required uint32 PWR = 13;</code>
     * @return The pWR.
     */
    int getPWR();

    /**
     * <code>required uint32 MAP = 14;</code>
     * @return Whether the mAP field is set.
     */
    boolean hasMAP();
    /**
     * <code>required uint32 MAP = 14;</code>
     * @return The mAP.
     */
    int getMAP();

    /**
     * <code>required uint32 trainingLoad = 15;</code>
     * @return Whether the trainingLoad field is set.
     */
    boolean hasTrainingLoad();
    /**
     * <code>required uint32 trainingLoad = 15;</code>
     * @return The trainingLoad.
     */
    int getTrainingLoad();

    /**
     * <code>required uint32 LTHR = 16;</code>
     * @return Whether the lTHR field is set.
     */
    boolean hasLTHR();
    /**
     * <code>required uint32 LTHR = 16;</code>
     * @return The lTHR.
     */
    int getLTHR();

    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @return A list containing the pHRZ.
     */
    java.util.List<java.lang.Integer> getPHRZList();
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @return The count of pHRZ.
     */
    int getPHRZCount();
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @param index The index of the element to return.
     * @return The pHRZ at the given index.
     */
    int getPHRZ(int index);

    /**
     * <code>required int32 trainingStatus = 18;</code>
     * @return Whether the trainingStatus field is set.
     */
    boolean hasTrainingStatus();
    /**
     * <code>required int32 trainingStatus = 18;</code>
     * @return The trainingStatus.
     */
    int getTrainingStatus();

    /**
     * <code>required uint32 tlTrend = 19;</code>
     * @return Whether the tlTrend field is set.
     */
    boolean hasTlTrend();
    /**
     * <code>required uint32 tlTrend = 19;</code>
     * @return The tlTrend.
     */
    int getTlTrend();

    /**
     * <code>required uint32 stamina = 20;</code>
     * @return Whether the stamina field is set.
     */
    boolean hasStamina();
    /**
     * <code>required uint32 stamina = 20;</code>
     * @return The stamina.
     */
    int getStamina();
  }
  /**
   * Protobuf type {@code pb_gm_statistical_outputs}
   */
  public  static final class pb_gm_statistical_outputs extends
      com.google.protobuf.GeneratedMessageLite<
          pb_gm_statistical_outputs, pb_gm_statistical_outputs.Builder> implements
      // @@protoc_insertion_point(message_implements:pb_gm_statistical_outputs)
      pb_gm_statistical_outputsOrBuilder {
    private pb_gm_statistical_outputs() {
      pHRZ_ = emptyIntList();
    }
    private int bitField0_;
    public static final int START_TIME_FIELD_NUMBER = 1;
    private int startTime_;
    /**
     * <code>required uint32 start_time = 1;</code>
     * @return Whether the startTime field is set.
     */
    @java.lang.Override
    public boolean hasStartTime() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required uint32 start_time = 1;</code>
     * @return The startTime.
     */
    @java.lang.Override
    public int getStartTime() {
      return startTime_;
    }
    /**
     * <code>required uint32 start_time = 1;</code>
     * @param value The startTime to set.
     */
    private void setStartTime(int value) {
      bitField0_ |= 0x00000001;
      startTime_ = value;
    }
    /**
     * <code>required uint32 start_time = 1;</code>
     */
    private void clearStartTime() {
      bitField0_ = (bitField0_ & ~0x00000001);
      startTime_ = 0;
    }

    public static final int END_TIME_FIELD_NUMBER = 2;
    private int endTime_;
    /**
     * <code>required uint32 end_time = 2;</code>
     * @return Whether the endTime field is set.
     */
    @java.lang.Override
    public boolean hasEndTime() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 end_time = 2;</code>
     * @return The endTime.
     */
    @java.lang.Override
    public int getEndTime() {
      return endTime_;
    }
    /**
     * <code>required uint32 end_time = 2;</code>
     * @param value The endTime to set.
     */
    private void setEndTime(int value) {
      bitField0_ |= 0x00000002;
      endTime_ = value;
    }
    /**
     * <code>required uint32 end_time = 2;</code>
     */
    private void clearEndTime() {
      bitField0_ = (bitField0_ & ~0x00000002);
      endTime_ = 0;
    }

    public static final int RECOVERYTIME_FIELD_NUMBER = 3;
    private int recoveryTime_;
    /**
     * <code>required int32 recoveryTime = 3;</code>
     * @return Whether the recoveryTime field is set.
     */
    @java.lang.Override
    public boolean hasRecoveryTime() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required int32 recoveryTime = 3;</code>
     * @return The recoveryTime.
     */
    @java.lang.Override
    public int getRecoveryTime() {
      return recoveryTime_;
    }
    /**
     * <code>required int32 recoveryTime = 3;</code>
     * @param value The recoveryTime to set.
     */
    private void setRecoveryTime(int value) {
      bitField0_ |= 0x00000004;
      recoveryTime_ = value;
    }
    /**
     * <code>required int32 recoveryTime = 3;</code>
     */
    private void clearRecoveryTime() {
      bitField0_ = (bitField0_ & ~0x00000004);
      recoveryTime_ = 0;
    }

    public static final int STAMINA_LEVEL_FIELD_NUMBER = 4;
    private int staminaLevel_;
    /**
     * <code>required uint32 stamina_level = 4;</code>
     * @return Whether the staminaLevel field is set.
     */
    @java.lang.Override
    public boolean hasStaminaLevel() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required uint32 stamina_level = 4;</code>
     * @return The staminaLevel.
     */
    @java.lang.Override
    public int getStaminaLevel() {
      return staminaLevel_;
    }
    /**
     * <code>required uint32 stamina_level = 4;</code>
     * @param value The staminaLevel to set.
     */
    private void setStaminaLevel(int value) {
      bitField0_ |= 0x00000008;
      staminaLevel_ = value;
    }
    /**
     * <code>required uint32 stamina_level = 4;</code>
     */
    private void clearStaminaLevel() {
      bitField0_ = (bitField0_ & ~0x00000008);
      staminaLevel_ = 0;
    }

    public static final int POWER_ABILITY_FIELD_NUMBER = 5;
    private int powerAbility_;
    /**
     * <code>required uint32 power_ability = 5;</code>
     * @return Whether the powerAbility field is set.
     */
    @java.lang.Override
    public boolean hasPowerAbility() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required uint32 power_ability = 5;</code>
     * @return The powerAbility.
     */
    @java.lang.Override
    public int getPowerAbility() {
      return powerAbility_;
    }
    /**
     * <code>required uint32 power_ability = 5;</code>
     * @param value The powerAbility to set.
     */
    private void setPowerAbility(int value) {
      bitField0_ |= 0x00000010;
      powerAbility_ = value;
    }
    /**
     * <code>required uint32 power_ability = 5;</code>
     */
    private void clearPowerAbility() {
      bitField0_ = (bitField0_ & ~0x00000010);
      powerAbility_ = 0;
    }

    public static final int ANAEROBIC_ABILITY_FIELD_NUMBER = 6;
    private int anaerobicAbility_;
    /**
     * <code>required uint32 anaerobic_ability = 6;</code>
     * @return Whether the anaerobicAbility field is set.
     */
    @java.lang.Override
    public boolean hasAnaerobicAbility() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>required uint32 anaerobic_ability = 6;</code>
     * @return The anaerobicAbility.
     */
    @java.lang.Override
    public int getAnaerobicAbility() {
      return anaerobicAbility_;
    }
    /**
     * <code>required uint32 anaerobic_ability = 6;</code>
     * @param value The anaerobicAbility to set.
     */
    private void setAnaerobicAbility(int value) {
      bitField0_ |= 0x00000020;
      anaerobicAbility_ = value;
    }
    /**
     * <code>required uint32 anaerobic_ability = 6;</code>
     */
    private void clearAnaerobicAbility() {
      bitField0_ = (bitField0_ & ~0x00000020);
      anaerobicAbility_ = 0;
    }

    public static final int AEROBIC_POWER_ABILITY_FIELD_NUMBER = 7;
    private int aerobicPowerAbility_;
    /**
     * <code>required uint32 aerobic_power_ability = 7;</code>
     * @return Whether the aerobicPowerAbility field is set.
     */
    @java.lang.Override
    public boolean hasAerobicPowerAbility() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>required uint32 aerobic_power_ability = 7;</code>
     * @return The aerobicPowerAbility.
     */
    @java.lang.Override
    public int getAerobicPowerAbility() {
      return aerobicPowerAbility_;
    }
    /**
     * <code>required uint32 aerobic_power_ability = 7;</code>
     * @param value The aerobicPowerAbility to set.
     */
    private void setAerobicPowerAbility(int value) {
      bitField0_ |= 0x00000040;
      aerobicPowerAbility_ = value;
    }
    /**
     * <code>required uint32 aerobic_power_ability = 7;</code>
     */
    private void clearAerobicPowerAbility() {
      bitField0_ = (bitField0_ & ~0x00000040);
      aerobicPowerAbility_ = 0;
    }

    public static final int AEROBIC_ABILTIY_FIELD_NUMBER = 8;
    private int aerobicAbiltiy_;
    /**
     * <code>required uint32 aerobic_abiltiy = 8;</code>
     * @return Whether the aerobicAbiltiy field is set.
     */
    @java.lang.Override
    public boolean hasAerobicAbiltiy() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>required uint32 aerobic_abiltiy = 8;</code>
     * @return The aerobicAbiltiy.
     */
    @java.lang.Override
    public int getAerobicAbiltiy() {
      return aerobicAbiltiy_;
    }
    /**
     * <code>required uint32 aerobic_abiltiy = 8;</code>
     * @param value The aerobicAbiltiy to set.
     */
    private void setAerobicAbiltiy(int value) {
      bitField0_ |= 0x00000080;
      aerobicAbiltiy_ = value;
    }
    /**
     * <code>required uint32 aerobic_abiltiy = 8;</code>
     */
    private void clearAerobicAbiltiy() {
      bitField0_ = (bitField0_ & ~0x00000080);
      aerobicAbiltiy_ = 0;
    }

    public static final int ENDURANCE_ABILTIY_FIELD_NUMBER = 9;
    private int enduranceAbiltiy_;
    /**
     * <code>required uint32 endurance_abiltiy = 9;</code>
     * @return Whether the enduranceAbiltiy field is set.
     */
    @java.lang.Override
    public boolean hasEnduranceAbiltiy() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>required uint32 endurance_abiltiy = 9;</code>
     * @return The enduranceAbiltiy.
     */
    @java.lang.Override
    public int getEnduranceAbiltiy() {
      return enduranceAbiltiy_;
    }
    /**
     * <code>required uint32 endurance_abiltiy = 9;</code>
     * @param value The enduranceAbiltiy to set.
     */
    private void setEnduranceAbiltiy(int value) {
      bitField0_ |= 0x00000100;
      enduranceAbiltiy_ = value;
    }
    /**
     * <code>required uint32 endurance_abiltiy = 9;</code>
     */
    private void clearEnduranceAbiltiy() {
      bitField0_ = (bitField0_ & ~0x00000100);
      enduranceAbiltiy_ = 0;
    }

    public static final int ULTRA_ENDURANCE_ABILITY_FIELD_NUMBER = 10;
    private int ultraEnduranceAbility_;
    /**
     * <code>required uint32 ultra_endurance_ability = 10;</code>
     * @return Whether the ultraEnduranceAbility field is set.
     */
    @java.lang.Override
    public boolean hasUltraEnduranceAbility() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>required uint32 ultra_endurance_ability = 10;</code>
     * @return The ultraEnduranceAbility.
     */
    @java.lang.Override
    public int getUltraEnduranceAbility() {
      return ultraEnduranceAbility_;
    }
    /**
     * <code>required uint32 ultra_endurance_ability = 10;</code>
     * @param value The ultraEnduranceAbility to set.
     */
    private void setUltraEnduranceAbility(int value) {
      bitField0_ |= 0x00000200;
      ultraEnduranceAbility_ = value;
    }
    /**
     * <code>required uint32 ultra_endurance_ability = 10;</code>
     */
    private void clearUltraEnduranceAbility() {
      bitField0_ = (bitField0_ & ~0x00000200);
      ultraEnduranceAbility_ = 0;
    }

    public static final int VO2MAX_FIELD_NUMBER = 11;
    private int vO2Max_;
    /**
     * <code>required uint32 VO2max = 11;</code>
     * @return Whether the vO2max field is set.
     */
    @java.lang.Override
    public boolean hasVO2Max() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>required uint32 VO2max = 11;</code>
     * @return The vO2max.
     */
    @java.lang.Override
    public int getVO2Max() {
      return vO2Max_;
    }
    /**
     * <code>required uint32 VO2max = 11;</code>
     * @param value The vO2max to set.
     */
    private void setVO2Max(int value) {
      bitField0_ |= 0x00000400;
      vO2Max_ = value;
    }
    /**
     * <code>required uint32 VO2max = 11;</code>
     */
    private void clearVO2Max() {
      bitField0_ = (bitField0_ & ~0x00000400);
      vO2Max_ = 0;
    }

    public static final int FTP_FIELD_NUMBER = 12;
    private int fTP_;
    /**
     * <code>required uint32 FTP = 12;</code>
     * @return Whether the fTP field is set.
     */
    @java.lang.Override
    public boolean hasFTP() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>required uint32 FTP = 12;</code>
     * @return The fTP.
     */
    @java.lang.Override
    public int getFTP() {
      return fTP_;
    }
    /**
     * <code>required uint32 FTP = 12;</code>
     * @param value The fTP to set.
     */
    private void setFTP(int value) {
      bitField0_ |= 0x00000800;
      fTP_ = value;
    }
    /**
     * <code>required uint32 FTP = 12;</code>
     */
    private void clearFTP() {
      bitField0_ = (bitField0_ & ~0x00000800);
      fTP_ = 0;
    }

    public static final int PWR_FIELD_NUMBER = 13;
    private int pWR_;
    /**
     * <code>required uint32 PWR = 13;</code>
     * @return Whether the pWR field is set.
     */
    @java.lang.Override
    public boolean hasPWR() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>required uint32 PWR = 13;</code>
     * @return The pWR.
     */
    @java.lang.Override
    public int getPWR() {
      return pWR_;
    }
    /**
     * <code>required uint32 PWR = 13;</code>
     * @param value The pWR to set.
     */
    private void setPWR(int value) {
      bitField0_ |= 0x00001000;
      pWR_ = value;
    }
    /**
     * <code>required uint32 PWR = 13;</code>
     */
    private void clearPWR() {
      bitField0_ = (bitField0_ & ~0x00001000);
      pWR_ = 0;
    }

    public static final int MAP_FIELD_NUMBER = 14;
    private int mAP_;
    /**
     * <code>required uint32 MAP = 14;</code>
     * @return Whether the mAP field is set.
     */
    @java.lang.Override
    public boolean hasMAP() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>required uint32 MAP = 14;</code>
     * @return The mAP.
     */
    @java.lang.Override
    public int getMAP() {
      return mAP_;
    }
    /**
     * <code>required uint32 MAP = 14;</code>
     * @param value The mAP to set.
     */
    private void setMAP(int value) {
      bitField0_ |= 0x00002000;
      mAP_ = value;
    }
    /**
     * <code>required uint32 MAP = 14;</code>
     */
    private void clearMAP() {
      bitField0_ = (bitField0_ & ~0x00002000);
      mAP_ = 0;
    }

    public static final int TRAININGLOAD_FIELD_NUMBER = 15;
    private int trainingLoad_;
    /**
     * <code>required uint32 trainingLoad = 15;</code>
     * @return Whether the trainingLoad field is set.
     */
    @java.lang.Override
    public boolean hasTrainingLoad() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>required uint32 trainingLoad = 15;</code>
     * @return The trainingLoad.
     */
    @java.lang.Override
    public int getTrainingLoad() {
      return trainingLoad_;
    }
    /**
     * <code>required uint32 trainingLoad = 15;</code>
     * @param value The trainingLoad to set.
     */
    private void setTrainingLoad(int value) {
      bitField0_ |= 0x00004000;
      trainingLoad_ = value;
    }
    /**
     * <code>required uint32 trainingLoad = 15;</code>
     */
    private void clearTrainingLoad() {
      bitField0_ = (bitField0_ & ~0x00004000);
      trainingLoad_ = 0;
    }

    public static final int LTHR_FIELD_NUMBER = 16;
    private int lTHR_;
    /**
     * <code>required uint32 LTHR = 16;</code>
     * @return Whether the lTHR field is set.
     */
    @java.lang.Override
    public boolean hasLTHR() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>required uint32 LTHR = 16;</code>
     * @return The lTHR.
     */
    @java.lang.Override
    public int getLTHR() {
      return lTHR_;
    }
    /**
     * <code>required uint32 LTHR = 16;</code>
     * @param value The lTHR to set.
     */
    private void setLTHR(int value) {
      bitField0_ |= 0x00008000;
      lTHR_ = value;
    }
    /**
     * <code>required uint32 LTHR = 16;</code>
     */
    private void clearLTHR() {
      bitField0_ = (bitField0_ & ~0x00008000);
      lTHR_ = 0;
    }

    public static final int PHRZ_FIELD_NUMBER = 17;
    private com.google.protobuf.Internal.IntList pHRZ_;
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @return A list containing the pHRZ.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getPHRZList() {
      return pHRZ_;
    }
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @return The count of pHRZ.
     */
    @java.lang.Override
    public int getPHRZCount() {
      return pHRZ_.size();
    }
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @param index The index of the element to return.
     * @return The pHRZ at the given index.
     */
    @java.lang.Override
    public int getPHRZ(int index) {
      return pHRZ_.getInt(index);
    }
    private void ensurePHRZIsMutable() {
      com.google.protobuf.Internal.IntList tmp = pHRZ_;
      if (!tmp.isModifiable()) {
        pHRZ_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @param index The index to set the value at.
     * @param value The pHRZ to set.
     */
    private void setPHRZ(
        int index, int value) {
      ensurePHRZIsMutable();
      pHRZ_.setInt(index, value);
    }
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @param value The pHRZ to add.
     */
    private void addPHRZ(int value) {
      ensurePHRZIsMutable();
      pHRZ_.addInt(value);
    }
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     * @param values The pHRZ to add.
     */
    private void addAllPHRZ(
        java.lang.Iterable<? extends java.lang.Integer> values) {
      ensurePHRZIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, pHRZ_);
    }
    /**
     * <code>repeated uint32 PHRZ = 17;</code>
     */
    private void clearPHRZ() {
      pHRZ_ = emptyIntList();
    }

    public static final int TRAININGSTATUS_FIELD_NUMBER = 18;
    private int trainingStatus_;
    /**
     * <code>required int32 trainingStatus = 18;</code>
     * @return Whether the trainingStatus field is set.
     */
    @java.lang.Override
    public boolean hasTrainingStatus() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <code>required int32 trainingStatus = 18;</code>
     * @return The trainingStatus.
     */
    @java.lang.Override
    public int getTrainingStatus() {
      return trainingStatus_;
    }
    /**
     * <code>required int32 trainingStatus = 18;</code>
     * @param value The trainingStatus to set.
     */
    private void setTrainingStatus(int value) {
      bitField0_ |= 0x00010000;
      trainingStatus_ = value;
    }
    /**
     * <code>required int32 trainingStatus = 18;</code>
     */
    private void clearTrainingStatus() {
      bitField0_ = (bitField0_ & ~0x00010000);
      trainingStatus_ = 0;
    }

    public static final int TLTREND_FIELD_NUMBER = 19;
    private int tlTrend_;
    /**
     * <code>required uint32 tlTrend = 19;</code>
     * @return Whether the tlTrend field is set.
     */
    @java.lang.Override
    public boolean hasTlTrend() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>required uint32 tlTrend = 19;</code>
     * @return The tlTrend.
     */
    @java.lang.Override
    public int getTlTrend() {
      return tlTrend_;
    }
    /**
     * <code>required uint32 tlTrend = 19;</code>
     * @param value The tlTrend to set.
     */
    private void setTlTrend(int value) {
      bitField0_ |= 0x00020000;
      tlTrend_ = value;
    }
    /**
     * <code>required uint32 tlTrend = 19;</code>
     */
    private void clearTlTrend() {
      bitField0_ = (bitField0_ & ~0x00020000);
      tlTrend_ = 0;
    }

    public static final int STAMINA_FIELD_NUMBER = 20;
    private int stamina_;
    /**
     * <code>required uint32 stamina = 20;</code>
     * @return Whether the stamina field is set.
     */
    @java.lang.Override
    public boolean hasStamina() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <code>required uint32 stamina = 20;</code>
     * @return The stamina.
     */
    @java.lang.Override
    public int getStamina() {
      return stamina_;
    }
    /**
     * <code>required uint32 stamina = 20;</code>
     * @param value The stamina to set.
     */
    private void setStamina(int value) {
      bitField0_ |= 0x00040000;
      stamina_ = value;
    }
    /**
     * <code>required uint32 stamina = 20;</code>
     */
    private void clearStamina() {
      bitField0_ = (bitField0_ & ~0x00040000);
      stamina_ = 0;
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * Protobuf type {@code pb_gm_statistical_outputs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs, Builder> implements
        // @@protoc_insertion_point(builder_implements:pb_gm_statistical_outputs)
        nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputsOrBuilder {
      // Construct using nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>required uint32 start_time = 1;</code>
       * @return Whether the startTime field is set.
       */
      @java.lang.Override
      public boolean hasStartTime() {
        return instance.hasStartTime();
      }
      /**
       * <code>required uint32 start_time = 1;</code>
       * @return The startTime.
       */
      @java.lang.Override
      public int getStartTime() {
        return instance.getStartTime();
      }
      /**
       * <code>required uint32 start_time = 1;</code>
       * @param value The startTime to set.
       * @return This builder for chaining.
       */
      public Builder setStartTime(int value) {
        copyOnWrite();
        instance.setStartTime(value);
        return this;
      }
      /**
       * <code>required uint32 start_time = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStartTime() {
        copyOnWrite();
        instance.clearStartTime();
        return this;
      }

      /**
       * <code>required uint32 end_time = 2;</code>
       * @return Whether the endTime field is set.
       */
      @java.lang.Override
      public boolean hasEndTime() {
        return instance.hasEndTime();
      }
      /**
       * <code>required uint32 end_time = 2;</code>
       * @return The endTime.
       */
      @java.lang.Override
      public int getEndTime() {
        return instance.getEndTime();
      }
      /**
       * <code>required uint32 end_time = 2;</code>
       * @param value The endTime to set.
       * @return This builder for chaining.
       */
      public Builder setEndTime(int value) {
        copyOnWrite();
        instance.setEndTime(value);
        return this;
      }
      /**
       * <code>required uint32 end_time = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndTime() {
        copyOnWrite();
        instance.clearEndTime();
        return this;
      }

      /**
       * <code>required int32 recoveryTime = 3;</code>
       * @return Whether the recoveryTime field is set.
       */
      @java.lang.Override
      public boolean hasRecoveryTime() {
        return instance.hasRecoveryTime();
      }
      /**
       * <code>required int32 recoveryTime = 3;</code>
       * @return The recoveryTime.
       */
      @java.lang.Override
      public int getRecoveryTime() {
        return instance.getRecoveryTime();
      }
      /**
       * <code>required int32 recoveryTime = 3;</code>
       * @param value The recoveryTime to set.
       * @return This builder for chaining.
       */
      public Builder setRecoveryTime(int value) {
        copyOnWrite();
        instance.setRecoveryTime(value);
        return this;
      }
      /**
       * <code>required int32 recoveryTime = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRecoveryTime() {
        copyOnWrite();
        instance.clearRecoveryTime();
        return this;
      }

      /**
       * <code>required uint32 stamina_level = 4;</code>
       * @return Whether the staminaLevel field is set.
       */
      @java.lang.Override
      public boolean hasStaminaLevel() {
        return instance.hasStaminaLevel();
      }
      /**
       * <code>required uint32 stamina_level = 4;</code>
       * @return The staminaLevel.
       */
      @java.lang.Override
      public int getStaminaLevel() {
        return instance.getStaminaLevel();
      }
      /**
       * <code>required uint32 stamina_level = 4;</code>
       * @param value The staminaLevel to set.
       * @return This builder for chaining.
       */
      public Builder setStaminaLevel(int value) {
        copyOnWrite();
        instance.setStaminaLevel(value);
        return this;
      }
      /**
       * <code>required uint32 stamina_level = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearStaminaLevel() {
        copyOnWrite();
        instance.clearStaminaLevel();
        return this;
      }

      /**
       * <code>required uint32 power_ability = 5;</code>
       * @return Whether the powerAbility field is set.
       */
      @java.lang.Override
      public boolean hasPowerAbility() {
        return instance.hasPowerAbility();
      }
      /**
       * <code>required uint32 power_ability = 5;</code>
       * @return The powerAbility.
       */
      @java.lang.Override
      public int getPowerAbility() {
        return instance.getPowerAbility();
      }
      /**
       * <code>required uint32 power_ability = 5;</code>
       * @param value The powerAbility to set.
       * @return This builder for chaining.
       */
      public Builder setPowerAbility(int value) {
        copyOnWrite();
        instance.setPowerAbility(value);
        return this;
      }
      /**
       * <code>required uint32 power_ability = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearPowerAbility() {
        copyOnWrite();
        instance.clearPowerAbility();
        return this;
      }

      /**
       * <code>required uint32 anaerobic_ability = 6;</code>
       * @return Whether the anaerobicAbility field is set.
       */
      @java.lang.Override
      public boolean hasAnaerobicAbility() {
        return instance.hasAnaerobicAbility();
      }
      /**
       * <code>required uint32 anaerobic_ability = 6;</code>
       * @return The anaerobicAbility.
       */
      @java.lang.Override
      public int getAnaerobicAbility() {
        return instance.getAnaerobicAbility();
      }
      /**
       * <code>required uint32 anaerobic_ability = 6;</code>
       * @param value The anaerobicAbility to set.
       * @return This builder for chaining.
       */
      public Builder setAnaerobicAbility(int value) {
        copyOnWrite();
        instance.setAnaerobicAbility(value);
        return this;
      }
      /**
       * <code>required uint32 anaerobic_ability = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearAnaerobicAbility() {
        copyOnWrite();
        instance.clearAnaerobicAbility();
        return this;
      }

      /**
       * <code>required uint32 aerobic_power_ability = 7;</code>
       * @return Whether the aerobicPowerAbility field is set.
       */
      @java.lang.Override
      public boolean hasAerobicPowerAbility() {
        return instance.hasAerobicPowerAbility();
      }
      /**
       * <code>required uint32 aerobic_power_ability = 7;</code>
       * @return The aerobicPowerAbility.
       */
      @java.lang.Override
      public int getAerobicPowerAbility() {
        return instance.getAerobicPowerAbility();
      }
      /**
       * <code>required uint32 aerobic_power_ability = 7;</code>
       * @param value The aerobicPowerAbility to set.
       * @return This builder for chaining.
       */
      public Builder setAerobicPowerAbility(int value) {
        copyOnWrite();
        instance.setAerobicPowerAbility(value);
        return this;
      }
      /**
       * <code>required uint32 aerobic_power_ability = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearAerobicPowerAbility() {
        copyOnWrite();
        instance.clearAerobicPowerAbility();
        return this;
      }

      /**
       * <code>required uint32 aerobic_abiltiy = 8;</code>
       * @return Whether the aerobicAbiltiy field is set.
       */
      @java.lang.Override
      public boolean hasAerobicAbiltiy() {
        return instance.hasAerobicAbiltiy();
      }
      /**
       * <code>required uint32 aerobic_abiltiy = 8;</code>
       * @return The aerobicAbiltiy.
       */
      @java.lang.Override
      public int getAerobicAbiltiy() {
        return instance.getAerobicAbiltiy();
      }
      /**
       * <code>required uint32 aerobic_abiltiy = 8;</code>
       * @param value The aerobicAbiltiy to set.
       * @return This builder for chaining.
       */
      public Builder setAerobicAbiltiy(int value) {
        copyOnWrite();
        instance.setAerobicAbiltiy(value);
        return this;
      }
      /**
       * <code>required uint32 aerobic_abiltiy = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearAerobicAbiltiy() {
        copyOnWrite();
        instance.clearAerobicAbiltiy();
        return this;
      }

      /**
       * <code>required uint32 endurance_abiltiy = 9;</code>
       * @return Whether the enduranceAbiltiy field is set.
       */
      @java.lang.Override
      public boolean hasEnduranceAbiltiy() {
        return instance.hasEnduranceAbiltiy();
      }
      /**
       * <code>required uint32 endurance_abiltiy = 9;</code>
       * @return The enduranceAbiltiy.
       */
      @java.lang.Override
      public int getEnduranceAbiltiy() {
        return instance.getEnduranceAbiltiy();
      }
      /**
       * <code>required uint32 endurance_abiltiy = 9;</code>
       * @param value The enduranceAbiltiy to set.
       * @return This builder for chaining.
       */
      public Builder setEnduranceAbiltiy(int value) {
        copyOnWrite();
        instance.setEnduranceAbiltiy(value);
        return this;
      }
      /**
       * <code>required uint32 endurance_abiltiy = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnduranceAbiltiy() {
        copyOnWrite();
        instance.clearEnduranceAbiltiy();
        return this;
      }

      /**
       * <code>required uint32 ultra_endurance_ability = 10;</code>
       * @return Whether the ultraEnduranceAbility field is set.
       */
      @java.lang.Override
      public boolean hasUltraEnduranceAbility() {
        return instance.hasUltraEnduranceAbility();
      }
      /**
       * <code>required uint32 ultra_endurance_ability = 10;</code>
       * @return The ultraEnduranceAbility.
       */
      @java.lang.Override
      public int getUltraEnduranceAbility() {
        return instance.getUltraEnduranceAbility();
      }
      /**
       * <code>required uint32 ultra_endurance_ability = 10;</code>
       * @param value The ultraEnduranceAbility to set.
       * @return This builder for chaining.
       */
      public Builder setUltraEnduranceAbility(int value) {
        copyOnWrite();
        instance.setUltraEnduranceAbility(value);
        return this;
      }
      /**
       * <code>required uint32 ultra_endurance_ability = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearUltraEnduranceAbility() {
        copyOnWrite();
        instance.clearUltraEnduranceAbility();
        return this;
      }

      /**
       * <code>required uint32 VO2max = 11;</code>
       * @return Whether the vO2max field is set.
       */
      @java.lang.Override
      public boolean hasVO2Max() {
        return instance.hasVO2Max();
      }
      /**
       * <code>required uint32 VO2max = 11;</code>
       * @return The vO2max.
       */
      @java.lang.Override
      public int getVO2Max() {
        return instance.getVO2Max();
      }
      /**
       * <code>required uint32 VO2max = 11;</code>
       * @param value The vO2max to set.
       * @return This builder for chaining.
       */
      public Builder setVO2Max(int value) {
        copyOnWrite();
        instance.setVO2Max(value);
        return this;
      }
      /**
       * <code>required uint32 VO2max = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearVO2Max() {
        copyOnWrite();
        instance.clearVO2Max();
        return this;
      }

      /**
       * <code>required uint32 FTP = 12;</code>
       * @return Whether the fTP field is set.
       */
      @java.lang.Override
      public boolean hasFTP() {
        return instance.hasFTP();
      }
      /**
       * <code>required uint32 FTP = 12;</code>
       * @return The fTP.
       */
      @java.lang.Override
      public int getFTP() {
        return instance.getFTP();
      }
      /**
       * <code>required uint32 FTP = 12;</code>
       * @param value The fTP to set.
       * @return This builder for chaining.
       */
      public Builder setFTP(int value) {
        copyOnWrite();
        instance.setFTP(value);
        return this;
      }
      /**
       * <code>required uint32 FTP = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearFTP() {
        copyOnWrite();
        instance.clearFTP();
        return this;
      }

      /**
       * <code>required uint32 PWR = 13;</code>
       * @return Whether the pWR field is set.
       */
      @java.lang.Override
      public boolean hasPWR() {
        return instance.hasPWR();
      }
      /**
       * <code>required uint32 PWR = 13;</code>
       * @return The pWR.
       */
      @java.lang.Override
      public int getPWR() {
        return instance.getPWR();
      }
      /**
       * <code>required uint32 PWR = 13;</code>
       * @param value The pWR to set.
       * @return This builder for chaining.
       */
      public Builder setPWR(int value) {
        copyOnWrite();
        instance.setPWR(value);
        return this;
      }
      /**
       * <code>required uint32 PWR = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearPWR() {
        copyOnWrite();
        instance.clearPWR();
        return this;
      }

      /**
       * <code>required uint32 MAP = 14;</code>
       * @return Whether the mAP field is set.
       */
      @java.lang.Override
      public boolean hasMAP() {
        return instance.hasMAP();
      }
      /**
       * <code>required uint32 MAP = 14;</code>
       * @return The mAP.
       */
      @java.lang.Override
      public int getMAP() {
        return instance.getMAP();
      }
      /**
       * <code>required uint32 MAP = 14;</code>
       * @param value The mAP to set.
       * @return This builder for chaining.
       */
      public Builder setMAP(int value) {
        copyOnWrite();
        instance.setMAP(value);
        return this;
      }
      /**
       * <code>required uint32 MAP = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearMAP() {
        copyOnWrite();
        instance.clearMAP();
        return this;
      }

      /**
       * <code>required uint32 trainingLoad = 15;</code>
       * @return Whether the trainingLoad field is set.
       */
      @java.lang.Override
      public boolean hasTrainingLoad() {
        return instance.hasTrainingLoad();
      }
      /**
       * <code>required uint32 trainingLoad = 15;</code>
       * @return The trainingLoad.
       */
      @java.lang.Override
      public int getTrainingLoad() {
        return instance.getTrainingLoad();
      }
      /**
       * <code>required uint32 trainingLoad = 15;</code>
       * @param value The trainingLoad to set.
       * @return This builder for chaining.
       */
      public Builder setTrainingLoad(int value) {
        copyOnWrite();
        instance.setTrainingLoad(value);
        return this;
      }
      /**
       * <code>required uint32 trainingLoad = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearTrainingLoad() {
        copyOnWrite();
        instance.clearTrainingLoad();
        return this;
      }

      /**
       * <code>required uint32 LTHR = 16;</code>
       * @return Whether the lTHR field is set.
       */
      @java.lang.Override
      public boolean hasLTHR() {
        return instance.hasLTHR();
      }
      /**
       * <code>required uint32 LTHR = 16;</code>
       * @return The lTHR.
       */
      @java.lang.Override
      public int getLTHR() {
        return instance.getLTHR();
      }
      /**
       * <code>required uint32 LTHR = 16;</code>
       * @param value The lTHR to set.
       * @return This builder for chaining.
       */
      public Builder setLTHR(int value) {
        copyOnWrite();
        instance.setLTHR(value);
        return this;
      }
      /**
       * <code>required uint32 LTHR = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearLTHR() {
        copyOnWrite();
        instance.clearLTHR();
        return this;
      }

      /**
       * <code>repeated uint32 PHRZ = 17;</code>
       * @return A list containing the pHRZ.
       */
      @java.lang.Override
      public java.util.List<java.lang.Integer>
          getPHRZList() {
        return java.util.Collections.unmodifiableList(
            instance.getPHRZList());
      }
      /**
       * <code>repeated uint32 PHRZ = 17;</code>
       * @return The count of pHRZ.
       */
      @java.lang.Override
      public int getPHRZCount() {
        return instance.getPHRZCount();
      }
      /**
       * <code>repeated uint32 PHRZ = 17;</code>
       * @param index The index of the element to return.
       * @return The pHRZ at the given index.
       */
      @java.lang.Override
      public int getPHRZ(int index) {
        return instance.getPHRZ(index);
      }
      /**
       * <code>repeated uint32 PHRZ = 17;</code>
       * @param value The pHRZ to set.
       * @return This builder for chaining.
       */
      public Builder setPHRZ(
          int index, int value) {
        copyOnWrite();
        instance.setPHRZ(index, value);
        return this;
      }
      /**
       * <code>repeated uint32 PHRZ = 17;</code>
       * @param value The pHRZ to add.
       * @return This builder for chaining.
       */
      public Builder addPHRZ(int value) {
        copyOnWrite();
        instance.addPHRZ(value);
        return this;
      }
      /**
       * <code>repeated uint32 PHRZ = 17;</code>
       * @param values The pHRZ to add.
       * @return This builder for chaining.
       */
      public Builder addAllPHRZ(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        copyOnWrite();
        instance.addAllPHRZ(values);
        return this;
      }
      /**
       * <code>repeated uint32 PHRZ = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearPHRZ() {
        copyOnWrite();
        instance.clearPHRZ();
        return this;
      }

      /**
       * <code>required int32 trainingStatus = 18;</code>
       * @return Whether the trainingStatus field is set.
       */
      @java.lang.Override
      public boolean hasTrainingStatus() {
        return instance.hasTrainingStatus();
      }
      /**
       * <code>required int32 trainingStatus = 18;</code>
       * @return The trainingStatus.
       */
      @java.lang.Override
      public int getTrainingStatus() {
        return instance.getTrainingStatus();
      }
      /**
       * <code>required int32 trainingStatus = 18;</code>
       * @param value The trainingStatus to set.
       * @return This builder for chaining.
       */
      public Builder setTrainingStatus(int value) {
        copyOnWrite();
        instance.setTrainingStatus(value);
        return this;
      }
      /**
       * <code>required int32 trainingStatus = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearTrainingStatus() {
        copyOnWrite();
        instance.clearTrainingStatus();
        return this;
      }

      /**
       * <code>required uint32 tlTrend = 19;</code>
       * @return Whether the tlTrend field is set.
       */
      @java.lang.Override
      public boolean hasTlTrend() {
        return instance.hasTlTrend();
      }
      /**
       * <code>required uint32 tlTrend = 19;</code>
       * @return The tlTrend.
       */
      @java.lang.Override
      public int getTlTrend() {
        return instance.getTlTrend();
      }
      /**
       * <code>required uint32 tlTrend = 19;</code>
       * @param value The tlTrend to set.
       * @return This builder for chaining.
       */
      public Builder setTlTrend(int value) {
        copyOnWrite();
        instance.setTlTrend(value);
        return this;
      }
      /**
       * <code>required uint32 tlTrend = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearTlTrend() {
        copyOnWrite();
        instance.clearTlTrend();
        return this;
      }

      /**
       * <code>required uint32 stamina = 20;</code>
       * @return Whether the stamina field is set.
       */
      @java.lang.Override
      public boolean hasStamina() {
        return instance.hasStamina();
      }
      /**
       * <code>required uint32 stamina = 20;</code>
       * @return The stamina.
       */
      @java.lang.Override
      public int getStamina() {
        return instance.getStamina();
      }
      /**
       * <code>required uint32 stamina = 20;</code>
       * @param value The stamina to set.
       * @return This builder for chaining.
       */
      public Builder setStamina(int value) {
        copyOnWrite();
        instance.setStamina(value);
        return this;
      }
      /**
       * <code>required uint32 stamina = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearStamina() {
        copyOnWrite();
        instance.clearStamina();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:pb_gm_statistical_outputs)
    }
    private byte memoizedIsInitialized = 2;
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "bitField0_",
              "startTime_",
              "endTime_",
              "recoveryTime_",
              "staminaLevel_",
              "powerAbility_",
              "anaerobicAbility_",
              "aerobicPowerAbility_",
              "aerobicAbiltiy_",
              "enduranceAbiltiy_",
              "ultraEnduranceAbility_",
              "vO2Max_",
              "fTP_",
              "pWR_",
              "mAP_",
              "trainingLoad_",
              "lTHR_",
              "pHRZ_",
              "trainingStatus_",
              "tlTrend_",
              "stamina_",
            };
            java.lang.String info =
                "\u0001\u0014\u0000\u0001\u0001\u0014\u0014\u0000\u0001\u0013\u0001\u150b\u0000\u0002" +
                "\u150b\u0001\u0003\u1504\u0002\u0004\u150b\u0003\u0005\u150b\u0004\u0006\u150b\u0005" +
                "\u0007\u150b\u0006\b\u150b\u0007\t\u150b\b\n\u150b\t\u000b\u150b\n\f\u150b\u000b" +
                "\r\u150b\f\u000e\u150b\r\u000f\u150b\u000e\u0010\u150b\u000f\u0011\u001d\u0012\u1504" +
                "\u0010\u0013\u150b\u0011\u0014\u150b\u0012";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs> parser = PARSER;
          if (parser == null) {
            synchronized (nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return memoizedIsInitialized;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        memoizedIsInitialized = (byte) (arg0 == null ? 0 : 1);
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:pb_gm_statistical_outputs)
    private static final nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs DEFAULT_INSTANCE;
    static {
      pb_gm_statistical_outputs defaultInstance = new pb_gm_statistical_outputs();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        pb_gm_statistical_outputs.class, defaultInstance);
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<pb_gm_statistical_outputs> PARSER;

    public static com.google.protobuf.Parser<pb_gm_statistical_outputs> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface pb_gm_historical_recordOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb_gm_historical_record)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required uint32 timestamp = 1;</code>
     * @return Whether the timestamp field is set.
     */
    boolean hasTimestamp();
    /**
     * <code>required uint32 timestamp = 1;</code>
     * @return The timestamp.
     */
    int getTimestamp();

    /**
     * <code>required uint32 VO2max = 2;</code>
     * @return Whether the vO2max field is set.
     */
    boolean hasVO2Max();
    /**
     * <code>required uint32 VO2max = 2;</code>
     * @return The vO2max.
     */
    int getVO2Max();

    /**
     * <code>required uint32 FTP = 3;</code>
     * @return Whether the fTP field is set.
     */
    boolean hasFTP();
    /**
     * <code>required uint32 FTP = 3;</code>
     * @return The fTP.
     */
    int getFTP();

    /**
     * <code>required uint32 MAP = 4;</code>
     * @return Whether the mAP field is set.
     */
    boolean hasMAP();
    /**
     * <code>required uint32 MAP = 4;</code>
     * @return The mAP.
     */
    int getMAP();

    /**
     * <code>required uint32 trainingLoad = 5;</code>
     * @return Whether the trainingLoad field is set.
     */
    boolean hasTrainingLoad();
    /**
     * <code>required uint32 trainingLoad = 5;</code>
     * @return The trainingLoad.
     */
    int getTrainingLoad();

    /**
     * <code>required uint32 trainingStatus = 6;</code>
     * @return Whether the trainingStatus field is set.
     */
    boolean hasTrainingStatus();
    /**
     * <code>required uint32 trainingStatus = 6;</code>
     * @return The trainingStatus.
     */
    int getTrainingStatus();

    /**
     * <code>required uint32 tlTrend = 7;</code>
     * @return Whether the tlTrend field is set.
     */
    boolean hasTlTrend();
    /**
     * <code>required uint32 tlTrend = 7;</code>
     * @return The tlTrend.
     */
    int getTlTrend();
  }
  /**
   * Protobuf type {@code pb_gm_historical_record}
   */
  public  static final class pb_gm_historical_record extends
      com.google.protobuf.GeneratedMessageLite<
          pb_gm_historical_record, pb_gm_historical_record.Builder> implements
      // @@protoc_insertion_point(message_implements:pb_gm_historical_record)
      pb_gm_historical_recordOrBuilder {
    private pb_gm_historical_record() {
    }
    private int bitField0_;
    public static final int TIMESTAMP_FIELD_NUMBER = 1;
    private int timestamp_;
    /**
     * <code>required uint32 timestamp = 1;</code>
     * @return Whether the timestamp field is set.
     */
    @java.lang.Override
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required uint32 timestamp = 1;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public int getTimestamp() {
      return timestamp_;
    }
    /**
     * <code>required uint32 timestamp = 1;</code>
     * @param value The timestamp to set.
     */
    private void setTimestamp(int value) {
      bitField0_ |= 0x00000001;
      timestamp_ = value;
    }
    /**
     * <code>required uint32 timestamp = 1;</code>
     */
    private void clearTimestamp() {
      bitField0_ = (bitField0_ & ~0x00000001);
      timestamp_ = 0;
    }

    public static final int VO2MAX_FIELD_NUMBER = 2;
    private int vO2Max_;
    /**
     * <code>required uint32 VO2max = 2;</code>
     * @return Whether the vO2max field is set.
     */
    @java.lang.Override
    public boolean hasVO2Max() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 VO2max = 2;</code>
     * @return The vO2max.
     */
    @java.lang.Override
    public int getVO2Max() {
      return vO2Max_;
    }
    /**
     * <code>required uint32 VO2max = 2;</code>
     * @param value The vO2max to set.
     */
    private void setVO2Max(int value) {
      bitField0_ |= 0x00000002;
      vO2Max_ = value;
    }
    /**
     * <code>required uint32 VO2max = 2;</code>
     */
    private void clearVO2Max() {
      bitField0_ = (bitField0_ & ~0x00000002);
      vO2Max_ = 0;
    }

    public static final int FTP_FIELD_NUMBER = 3;
    private int fTP_;
    /**
     * <code>required uint32 FTP = 3;</code>
     * @return Whether the fTP field is set.
     */
    @java.lang.Override
    public boolean hasFTP() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required uint32 FTP = 3;</code>
     * @return The fTP.
     */
    @java.lang.Override
    public int getFTP() {
      return fTP_;
    }
    /**
     * <code>required uint32 FTP = 3;</code>
     * @param value The fTP to set.
     */
    private void setFTP(int value) {
      bitField0_ |= 0x00000004;
      fTP_ = value;
    }
    /**
     * <code>required uint32 FTP = 3;</code>
     */
    private void clearFTP() {
      bitField0_ = (bitField0_ & ~0x00000004);
      fTP_ = 0;
    }

    public static final int MAP_FIELD_NUMBER = 4;
    private int mAP_;
    /**
     * <code>required uint32 MAP = 4;</code>
     * @return Whether the mAP field is set.
     */
    @java.lang.Override
    public boolean hasMAP() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required uint32 MAP = 4;</code>
     * @return The mAP.
     */
    @java.lang.Override
    public int getMAP() {
      return mAP_;
    }
    /**
     * <code>required uint32 MAP = 4;</code>
     * @param value The mAP to set.
     */
    private void setMAP(int value) {
      bitField0_ |= 0x00000008;
      mAP_ = value;
    }
    /**
     * <code>required uint32 MAP = 4;</code>
     */
    private void clearMAP() {
      bitField0_ = (bitField0_ & ~0x00000008);
      mAP_ = 0;
    }

    public static final int TRAININGLOAD_FIELD_NUMBER = 5;
    private int trainingLoad_;
    /**
     * <code>required uint32 trainingLoad = 5;</code>
     * @return Whether the trainingLoad field is set.
     */
    @java.lang.Override
    public boolean hasTrainingLoad() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required uint32 trainingLoad = 5;</code>
     * @return The trainingLoad.
     */
    @java.lang.Override
    public int getTrainingLoad() {
      return trainingLoad_;
    }
    /**
     * <code>required uint32 trainingLoad = 5;</code>
     * @param value The trainingLoad to set.
     */
    private void setTrainingLoad(int value) {
      bitField0_ |= 0x00000010;
      trainingLoad_ = value;
    }
    /**
     * <code>required uint32 trainingLoad = 5;</code>
     */
    private void clearTrainingLoad() {
      bitField0_ = (bitField0_ & ~0x00000010);
      trainingLoad_ = 0;
    }

    public static final int TRAININGSTATUS_FIELD_NUMBER = 6;
    private int trainingStatus_;
    /**
     * <code>required uint32 trainingStatus = 6;</code>
     * @return Whether the trainingStatus field is set.
     */
    @java.lang.Override
    public boolean hasTrainingStatus() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>required uint32 trainingStatus = 6;</code>
     * @return The trainingStatus.
     */
    @java.lang.Override
    public int getTrainingStatus() {
      return trainingStatus_;
    }
    /**
     * <code>required uint32 trainingStatus = 6;</code>
     * @param value The trainingStatus to set.
     */
    private void setTrainingStatus(int value) {
      bitField0_ |= 0x00000020;
      trainingStatus_ = value;
    }
    /**
     * <code>required uint32 trainingStatus = 6;</code>
     */
    private void clearTrainingStatus() {
      bitField0_ = (bitField0_ & ~0x00000020);
      trainingStatus_ = 0;
    }

    public static final int TLTREND_FIELD_NUMBER = 7;
    private int tlTrend_;
    /**
     * <code>required uint32 tlTrend = 7;</code>
     * @return Whether the tlTrend field is set.
     */
    @java.lang.Override
    public boolean hasTlTrend() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>required uint32 tlTrend = 7;</code>
     * @return The tlTrend.
     */
    @java.lang.Override
    public int getTlTrend() {
      return tlTrend_;
    }
    /**
     * <code>required uint32 tlTrend = 7;</code>
     * @param value The tlTrend to set.
     */
    private void setTlTrend(int value) {
      bitField0_ |= 0x00000040;
      tlTrend_ = value;
    }
    /**
     * <code>required uint32 tlTrend = 7;</code>
     */
    private void clearTlTrend() {
      bitField0_ = (bitField0_ & ~0x00000040);
      tlTrend_ = 0;
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * Protobuf type {@code pb_gm_historical_record}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record, Builder> implements
        // @@protoc_insertion_point(builder_implements:pb_gm_historical_record)
        nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_recordOrBuilder {
      // Construct using nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>required uint32 timestamp = 1;</code>
       * @return Whether the timestamp field is set.
       */
      @java.lang.Override
      public boolean hasTimestamp() {
        return instance.hasTimestamp();
      }
      /**
       * <code>required uint32 timestamp = 1;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public int getTimestamp() {
        return instance.getTimestamp();
      }
      /**
       * <code>required uint32 timestamp = 1;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(int value) {
        copyOnWrite();
        instance.setTimestamp(value);
        return this;
      }
      /**
       * <code>required uint32 timestamp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        copyOnWrite();
        instance.clearTimestamp();
        return this;
      }

      /**
       * <code>required uint32 VO2max = 2;</code>
       * @return Whether the vO2max field is set.
       */
      @java.lang.Override
      public boolean hasVO2Max() {
        return instance.hasVO2Max();
      }
      /**
       * <code>required uint32 VO2max = 2;</code>
       * @return The vO2max.
       */
      @java.lang.Override
      public int getVO2Max() {
        return instance.getVO2Max();
      }
      /**
       * <code>required uint32 VO2max = 2;</code>
       * @param value The vO2max to set.
       * @return This builder for chaining.
       */
      public Builder setVO2Max(int value) {
        copyOnWrite();
        instance.setVO2Max(value);
        return this;
      }
      /**
       * <code>required uint32 VO2max = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVO2Max() {
        copyOnWrite();
        instance.clearVO2Max();
        return this;
      }

      /**
       * <code>required uint32 FTP = 3;</code>
       * @return Whether the fTP field is set.
       */
      @java.lang.Override
      public boolean hasFTP() {
        return instance.hasFTP();
      }
      /**
       * <code>required uint32 FTP = 3;</code>
       * @return The fTP.
       */
      @java.lang.Override
      public int getFTP() {
        return instance.getFTP();
      }
      /**
       * <code>required uint32 FTP = 3;</code>
       * @param value The fTP to set.
       * @return This builder for chaining.
       */
      public Builder setFTP(int value) {
        copyOnWrite();
        instance.setFTP(value);
        return this;
      }
      /**
       * <code>required uint32 FTP = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFTP() {
        copyOnWrite();
        instance.clearFTP();
        return this;
      }

      /**
       * <code>required uint32 MAP = 4;</code>
       * @return Whether the mAP field is set.
       */
      @java.lang.Override
      public boolean hasMAP() {
        return instance.hasMAP();
      }
      /**
       * <code>required uint32 MAP = 4;</code>
       * @return The mAP.
       */
      @java.lang.Override
      public int getMAP() {
        return instance.getMAP();
      }
      /**
       * <code>required uint32 MAP = 4;</code>
       * @param value The mAP to set.
       * @return This builder for chaining.
       */
      public Builder setMAP(int value) {
        copyOnWrite();
        instance.setMAP(value);
        return this;
      }
      /**
       * <code>required uint32 MAP = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMAP() {
        copyOnWrite();
        instance.clearMAP();
        return this;
      }

      /**
       * <code>required uint32 trainingLoad = 5;</code>
       * @return Whether the trainingLoad field is set.
       */
      @java.lang.Override
      public boolean hasTrainingLoad() {
        return instance.hasTrainingLoad();
      }
      /**
       * <code>required uint32 trainingLoad = 5;</code>
       * @return The trainingLoad.
       */
      @java.lang.Override
      public int getTrainingLoad() {
        return instance.getTrainingLoad();
      }
      /**
       * <code>required uint32 trainingLoad = 5;</code>
       * @param value The trainingLoad to set.
       * @return This builder for chaining.
       */
      public Builder setTrainingLoad(int value) {
        copyOnWrite();
        instance.setTrainingLoad(value);
        return this;
      }
      /**
       * <code>required uint32 trainingLoad = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTrainingLoad() {
        copyOnWrite();
        instance.clearTrainingLoad();
        return this;
      }

      /**
       * <code>required uint32 trainingStatus = 6;</code>
       * @return Whether the trainingStatus field is set.
       */
      @java.lang.Override
      public boolean hasTrainingStatus() {
        return instance.hasTrainingStatus();
      }
      /**
       * <code>required uint32 trainingStatus = 6;</code>
       * @return The trainingStatus.
       */
      @java.lang.Override
      public int getTrainingStatus() {
        return instance.getTrainingStatus();
      }
      /**
       * <code>required uint32 trainingStatus = 6;</code>
       * @param value The trainingStatus to set.
       * @return This builder for chaining.
       */
      public Builder setTrainingStatus(int value) {
        copyOnWrite();
        instance.setTrainingStatus(value);
        return this;
      }
      /**
       * <code>required uint32 trainingStatus = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTrainingStatus() {
        copyOnWrite();
        instance.clearTrainingStatus();
        return this;
      }

      /**
       * <code>required uint32 tlTrend = 7;</code>
       * @return Whether the tlTrend field is set.
       */
      @java.lang.Override
      public boolean hasTlTrend() {
        return instance.hasTlTrend();
      }
      /**
       * <code>required uint32 tlTrend = 7;</code>
       * @return The tlTrend.
       */
      @java.lang.Override
      public int getTlTrend() {
        return instance.getTlTrend();
      }
      /**
       * <code>required uint32 tlTrend = 7;</code>
       * @param value The tlTrend to set.
       * @return This builder for chaining.
       */
      public Builder setTlTrend(int value) {
        copyOnWrite();
        instance.setTlTrend(value);
        return this;
      }
      /**
       * <code>required uint32 tlTrend = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTlTrend() {
        copyOnWrite();
        instance.clearTlTrend();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:pb_gm_historical_record)
    }
    private byte memoizedIsInitialized = 2;
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "bitField0_",
              "timestamp_",
              "vO2Max_",
              "fTP_",
              "mAP_",
              "trainingLoad_",
              "trainingStatus_",
              "tlTrend_",
            };
            java.lang.String info =
                "\u0001\u0007\u0000\u0001\u0001\u0007\u0007\u0000\u0000\u0007\u0001\u150b\u0000\u0002" +
                "\u150b\u0001\u0003\u150b\u0002\u0004\u150b\u0003\u0005\u150b\u0004\u0006\u150b\u0005" +
                "\u0007\u150b\u0006";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record> parser = PARSER;
          if (parser == null) {
            synchronized (nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return memoizedIsInitialized;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        memoizedIsInitialized = (byte) (arg0 == null ? 0 : 1);
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:pb_gm_historical_record)
    private static final nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record DEFAULT_INSTANCE;
    static {
      pb_gm_historical_record defaultInstance = new pb_gm_historical_record();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        pb_gm_historical_record.class, defaultInstance);
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<pb_gm_historical_record> PARSER;

    public static com.google.protobuf.Parser<pb_gm_historical_record> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface pb_gm_historical_dataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb_gm_historical_data)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    java.util.List<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record> 
        getRecordsList();
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record getRecords(int index);
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    int getRecordsCount();
  }
  /**
   * Protobuf type {@code pb_gm_historical_data}
   */
  public  static final class pb_gm_historical_data extends
      com.google.protobuf.GeneratedMessageLite<
          pb_gm_historical_data, pb_gm_historical_data.Builder> implements
      // @@protoc_insertion_point(message_implements:pb_gm_historical_data)
      pb_gm_historical_dataOrBuilder {
    private pb_gm_historical_data() {
      records_ = emptyProtobufList();
    }
    public static final int RECORDS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record> records_;
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    @java.lang.Override
    public java.util.List<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record> getRecordsList() {
      return records_;
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    public java.util.List<? extends nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_recordOrBuilder> 
        getRecordsOrBuilderList() {
      return records_;
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    @java.lang.Override
    public int getRecordsCount() {
      return records_.size();
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    @java.lang.Override
    public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record getRecords(int index) {
      return records_.get(index);
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_recordOrBuilder getRecordsOrBuilder(
        int index) {
      return records_.get(index);
    }
    private void ensureRecordsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record> tmp = records_;
      if (!tmp.isModifiable()) {
        records_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    private void setRecords(
        int index, nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record value) {
      value.getClass();
  ensureRecordsIsMutable();
      records_.set(index, value);
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    private void addRecords(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record value) {
      value.getClass();
  ensureRecordsIsMutable();
      records_.add(value);
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    private void addRecords(
        int index, nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record value) {
      value.getClass();
  ensureRecordsIsMutable();
      records_.add(index, value);
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    private void addAllRecords(
        java.lang.Iterable<? extends nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record> values) {
      ensureRecordsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, records_);
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    private void clearRecords() {
      records_ = emptyProtobufList();
    }
    /**
     * <code>repeated .pb_gm_historical_record records = 1;</code>
     */
    private void removeRecords(int index) {
      ensureRecordsIsMutable();
      records_.remove(index);
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * Protobuf type {@code pb_gm_historical_data}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data, Builder> implements
        // @@protoc_insertion_point(builder_implements:pb_gm_historical_data)
        nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_dataOrBuilder {
      // Construct using nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      @java.lang.Override
      public java.util.List<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record> getRecordsList() {
        return java.util.Collections.unmodifiableList(
            instance.getRecordsList());
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      @java.lang.Override
      public int getRecordsCount() {
        return instance.getRecordsCount();
      }/**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      @java.lang.Override
      public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record getRecords(int index) {
        return instance.getRecords(index);
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder setRecords(
          int index, nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record value) {
        copyOnWrite();
        instance.setRecords(index, value);
        return this;
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder setRecords(
          int index, nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record.Builder builderForValue) {
        copyOnWrite();
        instance.setRecords(index,
            builderForValue.build());
        return this;
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder addRecords(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record value) {
        copyOnWrite();
        instance.addRecords(value);
        return this;
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder addRecords(
          int index, nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record value) {
        copyOnWrite();
        instance.addRecords(index, value);
        return this;
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder addRecords(
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record.Builder builderForValue) {
        copyOnWrite();
        instance.addRecords(builderForValue.build());
        return this;
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder addRecords(
          int index, nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record.Builder builderForValue) {
        copyOnWrite();
        instance.addRecords(index,
            builderForValue.build());
        return this;
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder addAllRecords(
          java.lang.Iterable<? extends nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record> values) {
        copyOnWrite();
        instance.addAllRecords(values);
        return this;
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder clearRecords() {
        copyOnWrite();
        instance.clearRecords();
        return this;
      }
      /**
       * <code>repeated .pb_gm_historical_record records = 1;</code>
       */
      public Builder removeRecords(int index) {
        copyOnWrite();
        instance.removeRecords(index);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:pb_gm_historical_data)
    }
    private byte memoizedIsInitialized = 2;
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "records_",
              nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_record.class,
            };
            java.lang.String info =
                "\u0001\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0001\u0001\u0001\u041b";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data> parser = PARSER;
          if (parser == null) {
            synchronized (nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return memoizedIsInitialized;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        memoizedIsInitialized = (byte) (arg0 == null ? 0 : 1);
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:pb_gm_historical_data)
    private static final nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data DEFAULT_INSTANCE;
    static {
      pb_gm_historical_data defaultInstance = new pb_gm_historical_data();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        pb_gm_historical_data.class, defaultInstance);
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<pb_gm_historical_data> PARSER;

    public static com.google.protobuf.Parser<pb_gm_historical_data> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface pb_gm_persistent_dataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb_gm_persistent_data)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
     * @return Whether the statistical field is set.
     */
    boolean hasStatistical();
    /**
     * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
     * @return The statistical.
     */
    nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs getStatistical();

    /**
     * <code>optional .pb_gm_historical_data historical = 2;</code>
     * @return Whether the historical field is set.
     */
    boolean hasHistorical();
    /**
     * <code>optional .pb_gm_historical_data historical = 2;</code>
     * @return The historical.
     */
    nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data getHistorical();
  }
  /**
   * Protobuf type {@code pb_gm_persistent_data}
   */
  public  static final class pb_gm_persistent_data extends
      com.google.protobuf.GeneratedMessageLite<
          pb_gm_persistent_data, pb_gm_persistent_data.Builder> implements
      // @@protoc_insertion_point(message_implements:pb_gm_persistent_data)
      pb_gm_persistent_dataOrBuilder {
    private pb_gm_persistent_data() {
    }
    private int bitField0_;
    public static final int STATISTICAL_FIELD_NUMBER = 1;
    private nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs statistical_;
    /**
     * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
     */
    @java.lang.Override
    public boolean hasStatistical() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
     */
    @java.lang.Override
    public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs getStatistical() {
      return statistical_ == null ? nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs.getDefaultInstance() : statistical_;
    }
    /**
     * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
     */
    private void setStatistical(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs value) {
      value.getClass();
  statistical_ = value;
      bitField0_ |= 0x00000001;
      }
    /**
     * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeStatistical(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs value) {
      value.getClass();
  if (statistical_ != null &&
          statistical_ != nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs.getDefaultInstance()) {
        statistical_ =
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs.newBuilder(statistical_).mergeFrom(value).buildPartial();
      } else {
        statistical_ = value;
      }
      bitField0_ |= 0x00000001;
    }
    /**
     * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
     */
    private void clearStatistical() {  statistical_ = null;
      bitField0_ = (bitField0_ & ~0x00000001);
    }

    public static final int HISTORICAL_FIELD_NUMBER = 2;
    private nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data historical_;
    /**
     * <code>optional .pb_gm_historical_data historical = 2;</code>
     */
    @java.lang.Override
    public boolean hasHistorical() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .pb_gm_historical_data historical = 2;</code>
     */
    @java.lang.Override
    public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data getHistorical() {
      return historical_ == null ? nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data.getDefaultInstance() : historical_;
    }
    /**
     * <code>optional .pb_gm_historical_data historical = 2;</code>
     */
    private void setHistorical(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data value) {
      value.getClass();
  historical_ = value;
      bitField0_ |= 0x00000002;
      }
    /**
     * <code>optional .pb_gm_historical_data historical = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHistorical(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data value) {
      value.getClass();
  if (historical_ != null &&
          historical_ != nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data.getDefaultInstance()) {
        historical_ =
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data.newBuilder(historical_).mergeFrom(value).buildPartial();
      } else {
        historical_ = value;
      }
      bitField0_ |= 0x00000002;
    }
    /**
     * <code>optional .pb_gm_historical_data historical = 2;</code>
     */
    private void clearHistorical() {  historical_ = null;
      bitField0_ = (bitField0_ & ~0x00000002);
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * Protobuf type {@code pb_gm_persistent_data}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data, Builder> implements
        // @@protoc_insertion_point(builder_implements:pb_gm_persistent_data)
        nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_dataOrBuilder {
      // Construct using nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
       */
      @java.lang.Override
      public boolean hasStatistical() {
        return instance.hasStatistical();
      }
      /**
       * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
       */
      @java.lang.Override
      public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs getStatistical() {
        return instance.getStatistical();
      }
      /**
       * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
       */
      public Builder setStatistical(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs value) {
        copyOnWrite();
        instance.setStatistical(value);
        return this;
        }
      /**
       * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
       */
      public Builder setStatistical(
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs.Builder builderForValue) {
        copyOnWrite();
        instance.setStatistical(builderForValue.build());
        return this;
      }
      /**
       * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
       */
      public Builder mergeStatistical(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_statistical_outputs value) {
        copyOnWrite();
        instance.mergeStatistical(value);
        return this;
      }
      /**
       * <code>optional .pb_gm_statistical_outputs statistical = 1;</code>
       */
      public Builder clearStatistical() {  copyOnWrite();
        instance.clearStatistical();
        return this;
      }

      /**
       * <code>optional .pb_gm_historical_data historical = 2;</code>
       */
      @java.lang.Override
      public boolean hasHistorical() {
        return instance.hasHistorical();
      }
      /**
       * <code>optional .pb_gm_historical_data historical = 2;</code>
       */
      @java.lang.Override
      public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data getHistorical() {
        return instance.getHistorical();
      }
      /**
       * <code>optional .pb_gm_historical_data historical = 2;</code>
       */
      public Builder setHistorical(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data value) {
        copyOnWrite();
        instance.setHistorical(value);
        return this;
        }
      /**
       * <code>optional .pb_gm_historical_data historical = 2;</code>
       */
      public Builder setHistorical(
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data.Builder builderForValue) {
        copyOnWrite();
        instance.setHistorical(builderForValue.build());
        return this;
      }
      /**
       * <code>optional .pb_gm_historical_data historical = 2;</code>
       */
      public Builder mergeHistorical(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_historical_data value) {
        copyOnWrite();
        instance.mergeHistorical(value);
        return this;
      }
      /**
       * <code>optional .pb_gm_historical_data historical = 2;</code>
       */
      public Builder clearHistorical() {  copyOnWrite();
        instance.clearHistorical();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:pb_gm_persistent_data)
    }
    private byte memoizedIsInitialized = 2;
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "bitField0_",
              "statistical_",
              "historical_",
            };
            java.lang.String info =
                "\u0001\u0002\u0000\u0001\u0001\u0002\u0002\u0000\u0000\u0002\u0001\u1409\u0000\u0002" +
                "\u1409\u0001";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data> parser = PARSER;
          if (parser == null) {
            synchronized (nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return memoizedIsInitialized;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        memoizedIsInitialized = (byte) (arg0 == null ? 0 : 1);
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:pb_gm_persistent_data)
    private static final nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data DEFAULT_INSTANCE;
    static {
      pb_gm_persistent_data defaultInstance = new pb_gm_persistent_data();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        pb_gm_persistent_data.class, defaultInstance);
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<pb_gm_persistent_data> PARSER;

    public static com.google.protobuf.Parser<pb_gm_persistent_data> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface pb_gm_format_msgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb_gm_format_msg)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>required .service_type_index service_type = 1;</code>
     * @return Whether the serviceType field is set.
     */
    boolean hasServiceType();
    /**
     * <code>required .service_type_index service_type = 1;</code>
     * @return The serviceType.
     */
    nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index getServiceType();

    /**
     * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
     * @return Whether the operateType field is set.
     */
    boolean hasOperateType();
    /**
     * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
     * @return The operateType.
     */
    nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE getOperateType();

    /**
     * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
     * @return Whether the persistentData field is set.
     */
    boolean hasPersistentData();
    /**
     * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
     * @return The persistentData.
     */
    nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data getPersistentData();
  }
  /**
   * Protobuf type {@code pb_gm_format_msg}
   */
  public  static final class pb_gm_format_msg extends
      com.google.protobuf.GeneratedMessageLite<
          pb_gm_format_msg, pb_gm_format_msg.Builder> implements
      // @@protoc_insertion_point(message_implements:pb_gm_format_msg)
      pb_gm_format_msgOrBuilder {
    private pb_gm_format_msg() {
      operateType_ = 1;
    }
    private int bitField0_;
    public static final int SERVICE_TYPE_FIELD_NUMBER = 1;
    private int serviceType_;
    /**
     * <code>required .service_type_index service_type = 1;</code>
     * @return Whether the serviceType field is set.
     */
    @java.lang.Override
    public boolean hasServiceType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .service_type_index service_type = 1;</code>
     * @return The serviceType.
     */
    @java.lang.Override
    public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index getServiceType() {
      nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index result = nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index.forNumber(serviceType_);
      return result == null ? nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index.enum_SERVICE_TYPE_INDEX_NONE : result;
    }
    /**
     * <code>required .service_type_index service_type = 1;</code>
     * @param value The serviceType to set.
     */
    private void setServiceType(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index value) {
      serviceType_ = value.getNumber();
      bitField0_ |= 0x00000001;
    }
    /**
     * <code>required .service_type_index service_type = 1;</code>
     */
    private void clearServiceType() {
      bitField0_ = (bitField0_ & ~0x00000001);
      serviceType_ = 0;
    }

    public static final int OPERATE_TYPE_FIELD_NUMBER = 2;
    private int operateType_;
    /**
     * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
     * @return Whether the operateType field is set.
     */
    @java.lang.Override
    public boolean hasOperateType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
     * @return The operateType.
     */
    @java.lang.Override
    public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE getOperateType() {
      nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE result = nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE.forNumber(operateType_);
      return result == null ? nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE.LIB_GM_OPERATE_TYPE_INVALID : result;
    }
    /**
     * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
     * @param value The operateType to set.
     */
    private void setOperateType(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE value) {
      operateType_ = value.getNumber();
      bitField0_ |= 0x00000002;
    }
    /**
     * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
     */
    private void clearOperateType() {
      bitField0_ = (bitField0_ & ~0x00000002);
      operateType_ = 1;
    }

    public static final int PERSISTENT_DATA_FIELD_NUMBER = 3;
    private nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data persistentData_;
    /**
     * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
     */
    @java.lang.Override
    public boolean hasPersistentData() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
     */
    @java.lang.Override
    public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data getPersistentData() {
      return persistentData_ == null ? nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data.getDefaultInstance() : persistentData_;
    }
    /**
     * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
     */
    private void setPersistentData(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data value) {
      value.getClass();
  persistentData_ = value;
      bitField0_ |= 0x00000004;
      }
    /**
     * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergePersistentData(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data value) {
      value.getClass();
  if (persistentData_ != null &&
          persistentData_ != nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data.getDefaultInstance()) {
        persistentData_ =
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data.newBuilder(persistentData_).mergeFrom(value).buildPartial();
      } else {
        persistentData_ = value;
      }
      bitField0_ |= 0x00000004;
    }
    /**
     * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
     */
    private void clearPersistentData() {  persistentData_ = null;
      bitField0_ = (bitField0_ & ~0x00000004);
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * Protobuf type {@code pb_gm_format_msg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg, Builder> implements
        // @@protoc_insertion_point(builder_implements:pb_gm_format_msg)
        nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msgOrBuilder {
      // Construct using nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>required .service_type_index service_type = 1;</code>
       * @return Whether the serviceType field is set.
       */
      @java.lang.Override
      public boolean hasServiceType() {
        return instance.hasServiceType();
      }
      /**
       * <code>required .service_type_index service_type = 1;</code>
       * @return The serviceType.
       */
      @java.lang.Override
      public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index getServiceType() {
        return instance.getServiceType();
      }
      /**
       * <code>required .service_type_index service_type = 1;</code>
       * @param value The enum numeric value on the wire for serviceType to set.
       * @return This builder for chaining.
       */
      public Builder setServiceType(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index value) {
        copyOnWrite();
        instance.setServiceType(value);
        return this;
      }
      /**
       * <code>required .service_type_index service_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceType() {
        copyOnWrite();
        instance.clearServiceType();
        return this;
      }

      /**
       * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
       * @return Whether the operateType field is set.
       */
      @java.lang.Override
      public boolean hasOperateType() {
        return instance.hasOperateType();
      }
      /**
       * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
       * @return The operateType.
       */
      @java.lang.Override
      public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE getOperateType() {
        return instance.getOperateType();
      }
      /**
       * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
       * @param value The enum numeric value on the wire for operateType to set.
       * @return This builder for chaining.
       */
      public Builder setOperateType(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE value) {
        copyOnWrite();
        instance.setOperateType(value);
        return this;
      }
      /**
       * <code>required .LIB_GM_OPERATE_TYPE operate_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOperateType() {
        copyOnWrite();
        instance.clearOperateType();
        return this;
      }

      /**
       * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
       */
      @java.lang.Override
      public boolean hasPersistentData() {
        return instance.hasPersistentData();
      }
      /**
       * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
       */
      @java.lang.Override
      public nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data getPersistentData() {
        return instance.getPersistentData();
      }
      /**
       * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
       */
      public Builder setPersistentData(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data value) {
        copyOnWrite();
        instance.setPersistentData(value);
        return this;
        }
      /**
       * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
       */
      public Builder setPersistentData(
          nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data.Builder builderForValue) {
        copyOnWrite();
        instance.setPersistentData(builderForValue.build());
        return this;
      }
      /**
       * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
       */
      public Builder mergePersistentData(nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_persistent_data value) {
        copyOnWrite();
        instance.mergePersistentData(value);
        return this;
      }
      /**
       * <code>optional .pb_gm_persistent_data persistent_data = 3;</code>
       */
      public Builder clearPersistentData() {  copyOnWrite();
        instance.clearPersistentData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:pb_gm_format_msg)
    }
    private byte memoizedIsInitialized = 2;
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "bitField0_",
              "serviceType_",
              nodomain.freeyourgadget.gadgetbridge.proto.igpsport.Common.service_type_index.internalGetVerifier(),
              "operateType_",
              nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.LIB_GM_OPERATE_TYPE.internalGetVerifier(),
              "persistentData_",
            };
            java.lang.String info =
                "\u0001\u0003\u0000\u0001\u0001\u0003\u0003\u0000\u0000\u0003\u0001\u150c\u0000\u0002" +
                "\u150c\u0001\u0003\u1409\u0002";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg> parser = PARSER;
          if (parser == null) {
            synchronized (nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return memoizedIsInitialized;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        memoizedIsInitialized = (byte) (arg0 == null ? 0 : 1);
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:pb_gm_format_msg)
    private static final nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg DEFAULT_INSTANCE;
    static {
      pb_gm_format_msg defaultInstance = new pb_gm_format_msg();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        pb_gm_format_msg.class, defaultInstance);
    }

    public static nodomain.freeyourgadget.gadgetbridge.proto.igpsport.AlgGmData.pb_gm_format_msg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<pb_gm_format_msg> PARSER;

    public static com.google.protobuf.Parser<pb_gm_format_msg> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
