All Downloads are FREE. Search and download functionalities are using the official Maven repository.

skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata Maven / Gradle / Ivy

Go to download

Clarity is an open source replay parser for Dota 2 and CSGO 1 and 2 written in Java. This JAR contains the protobuf classes for clarity.

There is a newer version: 5.3
Show newest version
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: s2_dota_match_metadata.proto

package skadistats.clarity.wire.s2.proto;

public final class S2DotaMatchMetadata {
  private S2DotaMatchMetadata() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code EMatchBehaviorScoreVariance}
   */
  public enum EMatchBehaviorScoreVariance
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * k_EMatchBehaviorScoreVariance_Invalid = 0;
     */
    k_EMatchBehaviorScoreVariance_Invalid(0, 0),
    /**
     * k_EMatchBehaviorScoreVariance_Low = 1;
     */
    k_EMatchBehaviorScoreVariance_Low(1, 1),
    /**
     * k_EMatchBehaviorScoreVariance_Medium = 2;
     */
    k_EMatchBehaviorScoreVariance_Medium(2, 2),
    /**
     * k_EMatchBehaviorScoreVariance_High = 3;
     */
    k_EMatchBehaviorScoreVariance_High(3, 3),
    ;

    /**
     * k_EMatchBehaviorScoreVariance_Invalid = 0;
     */
    public static final int k_EMatchBehaviorScoreVariance_Invalid_VALUE = 0;
    /**
     * k_EMatchBehaviorScoreVariance_Low = 1;
     */
    public static final int k_EMatchBehaviorScoreVariance_Low_VALUE = 1;
    /**
     * k_EMatchBehaviorScoreVariance_Medium = 2;
     */
    public static final int k_EMatchBehaviorScoreVariance_Medium_VALUE = 2;
    /**
     * k_EMatchBehaviorScoreVariance_High = 3;
     */
    public static final int k_EMatchBehaviorScoreVariance_High_VALUE = 3;


    public final int getNumber() { return value; }

    public static EMatchBehaviorScoreVariance valueOf(int value) {
      switch (value) {
        case 0: return k_EMatchBehaviorScoreVariance_Invalid;
        case 1: return k_EMatchBehaviorScoreVariance_Low;
        case 2: return k_EMatchBehaviorScoreVariance_Medium;
        case 3: return k_EMatchBehaviorScoreVariance_High;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap() {
            public EMatchBehaviorScoreVariance findValueByNumber(int number) {
              return EMatchBehaviorScoreVariance.valueOf(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int index;
    private final int value;

    private EMatchBehaviorScoreVariance(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:EMatchBehaviorScoreVariance)
  }

  public interface CLobbyTimedRewardDetailsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CLobbyTimedRewardDetails)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional uint32 item_def_index = 2;
     */
    boolean hasItemDefIndex();
    /**
     * optional uint32 item_def_index = 2;
     */
    int getItemDefIndex();

    /**
     * optional bool is_supply_crate = 3;
     */
    boolean hasIsSupplyCrate();
    /**
     * optional bool is_supply_crate = 3;
     */
    boolean getIsSupplyCrate();

    /**
     * optional bool is_timed_drop = 4;
     */
    boolean hasIsTimedDrop();
    /**
     * optional bool is_timed_drop = 4;
     */
    boolean getIsTimedDrop();

    /**
     * optional uint32 account_id = 5;
     */
    boolean hasAccountId();
    /**
     * optional uint32 account_id = 5;
     */
    int getAccountId();

    /**
     * optional uint32 origin = 6;
     */
    boolean hasOrigin();
    /**
     * optional uint32 origin = 6;
     */
    int getOrigin();
  }
  /**
   * Protobuf type {@code CLobbyTimedRewardDetails}
   */
  public static final class CLobbyTimedRewardDetails extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CLobbyTimedRewardDetails)
      CLobbyTimedRewardDetailsOrBuilder {
    // Use CLobbyTimedRewardDetails.newBuilder() to construct.
    private CLobbyTimedRewardDetails(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CLobbyTimedRewardDetails(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final CLobbyTimedRewardDetails defaultInstance;
    public static CLobbyTimedRewardDetails getDefaultInstance() {
      return defaultInstance;
    }

    public CLobbyTimedRewardDetails getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CLobbyTimedRewardDetails(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 16: {
              bitField0_ |= 0x00000001;
              itemDefIndex_ = input.readUInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              isSupplyCrate_ = input.readBool();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000004;
              isTimedDrop_ = input.readBool();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              accountId_ = input.readUInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000010;
              origin_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CLobbyTimedRewardDetails_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CLobbyTimedRewardDetails_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int ITEM_DEF_INDEX_FIELD_NUMBER = 2;
    private int itemDefIndex_;
    /**
     * optional uint32 item_def_index = 2;
     */
    public boolean hasItemDefIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional uint32 item_def_index = 2;
     */
    public int getItemDefIndex() {
      return itemDefIndex_;
    }

    public static final int IS_SUPPLY_CRATE_FIELD_NUMBER = 3;
    private boolean isSupplyCrate_;
    /**
     * optional bool is_supply_crate = 3;
     */
    public boolean hasIsSupplyCrate() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional bool is_supply_crate = 3;
     */
    public boolean getIsSupplyCrate() {
      return isSupplyCrate_;
    }

    public static final int IS_TIMED_DROP_FIELD_NUMBER = 4;
    private boolean isTimedDrop_;
    /**
     * optional bool is_timed_drop = 4;
     */
    public boolean hasIsTimedDrop() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional bool is_timed_drop = 4;
     */
    public boolean getIsTimedDrop() {
      return isTimedDrop_;
    }

    public static final int ACCOUNT_ID_FIELD_NUMBER = 5;
    private int accountId_;
    /**
     * optional uint32 account_id = 5;
     */
    public boolean hasAccountId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional uint32 account_id = 5;
     */
    public int getAccountId() {
      return accountId_;
    }

    public static final int ORIGIN_FIELD_NUMBER = 6;
    private int origin_;
    /**
     * optional uint32 origin = 6;
     */
    public boolean hasOrigin() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional uint32 origin = 6;
     */
    public int getOrigin() {
      return origin_;
    }

    private void initFields() {
      itemDefIndex_ = 0;
      isSupplyCrate_ = false;
      isTimedDrop_ = false;
      accountId_ = 0;
      origin_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(2, itemDefIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(3, isSupplyCrate_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(4, isTimedDrop_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(5, accountId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(6, origin_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, itemDefIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isSupplyCrate_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isTimedDrop_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, accountId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, origin_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code CLobbyTimedRewardDetails}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CLobbyTimedRewardDetails)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetailsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CLobbyTimedRewardDetails_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CLobbyTimedRewardDetails_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        itemDefIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        isSupplyCrate_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        isTimedDrop_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        accountId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        origin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CLobbyTimedRewardDetails_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.getDefaultInstance();
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails build() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.itemDefIndex_ = itemDefIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.isSupplyCrate_ = isSupplyCrate_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.isTimedDrop_ = isTimedDrop_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.accountId_ = accountId_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.origin_ = origin_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails) {
          return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.getDefaultInstance()) return this;
        if (other.hasItemDefIndex()) {
          setItemDefIndex(other.getItemDefIndex());
        }
        if (other.hasIsSupplyCrate()) {
          setIsSupplyCrate(other.getIsSupplyCrate());
        }
        if (other.hasIsTimedDrop()) {
          setIsTimedDrop(other.getIsTimedDrop());
        }
        if (other.hasAccountId()) {
          setAccountId(other.getAccountId());
        }
        if (other.hasOrigin()) {
          setOrigin(other.getOrigin());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int itemDefIndex_ ;
      /**
       * optional uint32 item_def_index = 2;
       */
      public boolean hasItemDefIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 item_def_index = 2;
       */
      public int getItemDefIndex() {
        return itemDefIndex_;
      }
      /**
       * optional uint32 item_def_index = 2;
       */
      public Builder setItemDefIndex(int value) {
        bitField0_ |= 0x00000001;
        itemDefIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 item_def_index = 2;
       */
      public Builder clearItemDefIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        itemDefIndex_ = 0;
        onChanged();
        return this;
      }

      private boolean isSupplyCrate_ ;
      /**
       * optional bool is_supply_crate = 3;
       */
      public boolean hasIsSupplyCrate() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional bool is_supply_crate = 3;
       */
      public boolean getIsSupplyCrate() {
        return isSupplyCrate_;
      }
      /**
       * optional bool is_supply_crate = 3;
       */
      public Builder setIsSupplyCrate(boolean value) {
        bitField0_ |= 0x00000002;
        isSupplyCrate_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool is_supply_crate = 3;
       */
      public Builder clearIsSupplyCrate() {
        bitField0_ = (bitField0_ & ~0x00000002);
        isSupplyCrate_ = false;
        onChanged();
        return this;
      }

      private boolean isTimedDrop_ ;
      /**
       * optional bool is_timed_drop = 4;
       */
      public boolean hasIsTimedDrop() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional bool is_timed_drop = 4;
       */
      public boolean getIsTimedDrop() {
        return isTimedDrop_;
      }
      /**
       * optional bool is_timed_drop = 4;
       */
      public Builder setIsTimedDrop(boolean value) {
        bitField0_ |= 0x00000004;
        isTimedDrop_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool is_timed_drop = 4;
       */
      public Builder clearIsTimedDrop() {
        bitField0_ = (bitField0_ & ~0x00000004);
        isTimedDrop_ = false;
        onChanged();
        return this;
      }

      private int accountId_ ;
      /**
       * optional uint32 account_id = 5;
       */
      public boolean hasAccountId() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint32 account_id = 5;
       */
      public int getAccountId() {
        return accountId_;
      }
      /**
       * optional uint32 account_id = 5;
       */
      public Builder setAccountId(int value) {
        bitField0_ |= 0x00000008;
        accountId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 account_id = 5;
       */
      public Builder clearAccountId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        accountId_ = 0;
        onChanged();
        return this;
      }

      private int origin_ ;
      /**
       * optional uint32 origin = 6;
       */
      public boolean hasOrigin() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint32 origin = 6;
       */
      public int getOrigin() {
        return origin_;
      }
      /**
       * optional uint32 origin = 6;
       */
      public Builder setOrigin(int value) {
        bitField0_ |= 0x00000010;
        origin_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 origin = 6;
       */
      public Builder clearOrigin() {
        bitField0_ = (bitField0_ & ~0x00000010);
        origin_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CLobbyTimedRewardDetails)
    }

    static {
      defaultInstance = new CLobbyTimedRewardDetails(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:CLobbyTimedRewardDetails)
  }

  public interface CDOTAMatchMetadataFileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadataFile)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required int32 version = 1;
     */
    boolean hasVersion();
    /**
     * required int32 version = 1;
     */
    int getVersion();

    /**
     * required uint64 match_id = 2;
     */
    boolean hasMatchId();
    /**
     * required uint64 match_id = 2;
     */
    long getMatchId();

    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    boolean hasMetadata();
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata();
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder();

    /**
     * optional bytes private_metadata = 5;
     */
    boolean hasPrivateMetadata();
    /**
     * optional bytes private_metadata = 5;
     */
    com.google.protobuf.ByteString getPrivateMetadata();
  }
  /**
   * Protobuf type {@code CDOTAMatchMetadataFile}
   */
  public static final class CDOTAMatchMetadataFile extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CDOTAMatchMetadataFile)
      CDOTAMatchMetadataFileOrBuilder {
    // Use CDOTAMatchMetadataFile.newBuilder() to construct.
    private CDOTAMatchMetadataFile(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CDOTAMatchMetadataFile(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final CDOTAMatchMetadataFile defaultInstance;
    public static CDOTAMatchMetadataFile getDefaultInstance() {
      return defaultInstance;
    }

    public CDOTAMatchMetadataFile getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CDOTAMatchMetadataFile(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              version_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              matchId_ = input.readUInt64();
              break;
            }
            case 26: {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 42: {
              bitField0_ |= 0x00000008;
              privateMetadata_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * required int32 version = 1;
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required int32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int MATCH_ID_FIELD_NUMBER = 2;
    private long matchId_;
    /**
     * required uint64 match_id = 2;
     */
    public boolean hasMatchId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * required uint64 match_id = 2;
     */
    public long getMatchId() {
      return matchId_;
    }

    public static final int METADATA_FIELD_NUMBER = 3;
    private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata metadata_;
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata() {
      return metadata_;
    }
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder() {
      return metadata_;
    }

    public static final int PRIVATE_METADATA_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString privateMetadata_;
    /**
     * optional bytes private_metadata = 5;
     */
    public boolean hasPrivateMetadata() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional bytes private_metadata = 5;
     */
    public com.google.protobuf.ByteString getPrivateMetadata() {
      return privateMetadata_;
    }

    private void initFields() {
      version_ = 0;
      matchId_ = 0L;
      metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
      privateMetadata_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMatchId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, version_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, matchId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, metadata_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(5, privateMetadata_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, version_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, matchId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, metadata_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, privateMetadata_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code CDOTAMatchMetadataFile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadataFile)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        version_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        matchId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (metadataBuilder_ == null) {
          metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        privateMetadata_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.getDefaultInstance();
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile build() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.version_ = version_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.matchId_ = matchId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.privateMetadata_ = privateMetadata_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile) {
          return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.getDefaultInstance()) return this;
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (other.hasMatchId()) {
          setMatchId(other.getMatchId());
        }
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasPrivateMetadata()) {
          setPrivateMetadata(other.getPrivateMetadata());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasVersion()) {
          
          return false;
        }
        if (!hasMatchId()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int version_ ;
      /**
       * required int32 version = 1;
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required int32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * required int32 version = 1;
       */
      public Builder setVersion(int value) {
        bitField0_ |= 0x00000001;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * required int32 version = 1;
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 0;
        onChanged();
        return this;
      }

      private long matchId_ ;
      /**
       * required uint64 match_id = 2;
       */
      public boolean hasMatchId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * required uint64 match_id = 2;
       */
      public long getMatchId() {
        return matchId_;
      }
      /**
       * required uint64 match_id = 2;
       */
      public Builder setMatchId(long value) {
        bitField0_ |= 0x00000002;
        matchId_ = value;
        onChanged();
        return this;
      }
      /**
       * required uint64 match_id = 2;
       */
      public Builder clearMatchId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        matchId_ = 0L;
        onChanged();
        return this;
      }

      private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder> metadataBuilder_;
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public Builder setMetadata(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public Builder setMetadata(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public Builder mergeMetadata(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              metadata_ != skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance()) {
            metadata_ =
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_;
        }
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private com.google.protobuf.ByteString privateMetadata_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * optional bytes private_metadata = 5;
       */
      public boolean hasPrivateMetadata() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional bytes private_metadata = 5;
       */
      public com.google.protobuf.ByteString getPrivateMetadata() {
        return privateMetadata_;
      }
      /**
       * optional bytes private_metadata = 5;
       */
      public Builder setPrivateMetadata(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        privateMetadata_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bytes private_metadata = 5;
       */
      public Builder clearPrivateMetadata() {
        bitField0_ = (bitField0_ & ~0x00000008);
        privateMetadata_ = getDefaultInstance().getPrivateMetadata();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadataFile)
    }

    static {
      defaultInstance = new CDOTAMatchMetadataFile(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:CDOTAMatchMetadataFile)
  }

  public interface CDOTAMatchMetadataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    java.util.List 
        getTeamsList();
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team getTeams(int index);
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    int getTeamsCount();
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    java.util.List 
        getTeamsOrBuilderList();
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder getTeamsOrBuilder(
        int index);

    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    java.util.List 
        getItemRewardsList();
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails getItemRewards(int index);
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    int getItemRewardsCount();
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    java.util.List 
        getItemRewardsOrBuilderList();
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetailsOrBuilder getItemRewardsOrBuilder(
        int index);

    /**
     * optional fixed64 lobby_id = 3;
     */
    boolean hasLobbyId();
    /**
     * optional fixed64 lobby_id = 3;
     */
    long getLobbyId();

    /**
     * optional fixed64 report_until_time = 4;
     */
    boolean hasReportUntilTime();
    /**
     * optional fixed64 report_until_time = 4;
     */
    long getReportUntilTime();

    /**
     * optional bytes event_game_custom_table = 5;
     */
    boolean hasEventGameCustomTable();
    /**
     * optional bytes event_game_custom_table = 5;
     */
    com.google.protobuf.ByteString getEventGameCustomTable();

    /**
     * optional uint32 primary_event_id = 6;
     */
    boolean hasPrimaryEventId();
    /**
     * optional uint32 primary_event_id = 6;
     */
    int getPrimaryEventId();

    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    java.util.List 
        getMatchTipsList();
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips getMatchTips(int index);
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    int getMatchTipsCount();
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    java.util.List 
        getMatchTipsOrBuilderList();
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder getMatchTipsOrBuilder(
        int index);

    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    boolean hasMatchmakingStats();
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats getMatchmakingStats();
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStatsOrBuilder getMatchmakingStatsOrBuilder();
  }
  /**
   * Protobuf type {@code CDOTAMatchMetadata}
   */
  public static final class CDOTAMatchMetadata extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata)
      CDOTAMatchMetadataOrBuilder {
    // Use CDOTAMatchMetadata.newBuilder() to construct.
    private CDOTAMatchMetadata(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CDOTAMatchMetadata(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final CDOTAMatchMetadata defaultInstance;
    public static CDOTAMatchMetadata getDefaultInstance() {
      return defaultInstance;
    }

    public CDOTAMatchMetadata getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CDOTAMatchMetadata(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                teams_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              teams_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                itemRewards_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              itemRewards_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.PARSER, extensionRegistry));
              break;
            }
            case 25: {
              bitField0_ |= 0x00000001;
              lobbyId_ = input.readFixed64();
              break;
            }
            case 33: {
              bitField0_ |= 0x00000002;
              reportUntilTime_ = input.readFixed64();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000004;
              eventGameCustomTable_ = input.readBytes();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000008;
              primaryEventId_ = input.readUInt32();
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                matchTips_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000040;
              }
              matchTips_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.PARSER, extensionRegistry));
              break;
            }
            case 66: {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = matchmakingStats_.toBuilder();
              }
              matchmakingStats_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(matchmakingStats_);
                matchmakingStats_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          teams_ = java.util.Collections.unmodifiableList(teams_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          itemRewards_ = java.util.Collections.unmodifiableList(itemRewards_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          matchTips_ = java.util.Collections.unmodifiableList(matchTips_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder.class);
    }

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

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

    public interface TeamOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint32 dota_team = 1;
       */
      boolean hasDotaTeam();
      /**
       * optional uint32 dota_team = 1;
       */
      int getDotaTeam();

      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      java.util.List 
          getPlayersList();
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player getPlayers(int index);
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      int getPlayersCount();
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      java.util.List 
          getPlayersOrBuilderList();
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
          int index);

      /**
       * repeated float graph_experience = 3;
       */
      java.util.List getGraphExperienceList();
      /**
       * repeated float graph_experience = 3;
       */
      int getGraphExperienceCount();
      /**
       * repeated float graph_experience = 3;
       */
      float getGraphExperience(int index);

      /**
       * repeated float graph_gold_earned = 4;
       */
      java.util.List getGraphGoldEarnedList();
      /**
       * repeated float graph_gold_earned = 4;
       */
      int getGraphGoldEarnedCount();
      /**
       * repeated float graph_gold_earned = 4;
       */
      float getGraphGoldEarned(int index);

      /**
       * repeated float graph_net_worth = 5;
       */
      java.util.List getGraphNetWorthList();
      /**
       * repeated float graph_net_worth = 5;
       */
      int getGraphNetWorthCount();
      /**
       * repeated float graph_net_worth = 5;
       */
      float getGraphNetWorth(int index);

      /**
       * optional bool cm_first_pick = 6;
       */
      boolean hasCmFirstPick();
      /**
       * optional bool cm_first_pick = 6;
       */
      boolean getCmFirstPick();

      /**
       * optional uint32 cm_captain_player_id = 7;
       */
      boolean hasCmCaptainPlayerId();
      /**
       * optional uint32 cm_captain_player_id = 7;
       */
      int getCmCaptainPlayerId();

      /**
       * repeated uint32 cm_bans = 8;
       */
      java.util.List getCmBansList();
      /**
       * repeated uint32 cm_bans = 8;
       */
      int getCmBansCount();
      /**
       * repeated uint32 cm_bans = 8;
       */
      int getCmBans(int index);

      /**
       * repeated uint32 cm_picks = 9;
       */
      java.util.List getCmPicksList();
      /**
       * repeated uint32 cm_picks = 9;
       */
      int getCmPicksCount();
      /**
       * repeated uint32 cm_picks = 9;
       */
      int getCmPicks(int index);

      /**
       * optional uint32 cm_penalty = 10;
       */
      boolean hasCmPenalty();
      /**
       * optional uint32 cm_penalty = 10;
       */
      int getCmPenalty();
    }
    /**
     * Protobuf type {@code CDOTAMatchMetadata.Team}
     */
    public static final class Team extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team)
        TeamOrBuilder {
      // Use Team.newBuilder() to construct.
      private Team(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Team(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final Team defaultInstance;
      public static Team getDefaultInstance() {
        return defaultInstance;
      }

      public Team getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Team(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                dotaTeam_ = input.readUInt32();
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  players_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000002;
                }
                players_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.PARSER, extensionRegistry));
                break;
              }
              case 29: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  graphExperience_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                graphExperience_.add(input.readFloat());
                break;
              }
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                  graphExperience_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                while (input.getBytesUntilLimit() > 0) {
                  graphExperience_.add(input.readFloat());
                }
                input.popLimit(limit);
                break;
              }
              case 37: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  graphGoldEarned_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000008;
                }
                graphGoldEarned_.add(input.readFloat());
                break;
              }
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                  graphGoldEarned_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000008;
                }
                while (input.getBytesUntilLimit() > 0) {
                  graphGoldEarned_.add(input.readFloat());
                }
                input.popLimit(limit);
                break;
              }
              case 45: {
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                  graphNetWorth_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000010;
                }
                graphNetWorth_.add(input.readFloat());
                break;
              }
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                  graphNetWorth_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000010;
                }
                while (input.getBytesUntilLimit() > 0) {
                  graphNetWorth_.add(input.readFloat());
                }
                input.popLimit(limit);
                break;
              }
              case 48: {
                bitField0_ |= 0x00000002;
                cmFirstPick_ = input.readBool();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000004;
                cmCaptainPlayerId_ = input.readUInt32();
                break;
              }
              case 64: {
                if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                  cmBans_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000080;
                }
                cmBans_.add(input.readUInt32());
                break;
              }
              case 66: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                  cmBans_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000080;
                }
                while (input.getBytesUntilLimit() > 0) {
                  cmBans_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 72: {
                if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                  cmPicks_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000100;
                }
                cmPicks_.add(input.readUInt32());
                break;
              }
              case 74: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000100) == 0x00000100) && input.getBytesUntilLimit() > 0) {
                  cmPicks_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000100;
                }
                while (input.getBytesUntilLimit() > 0) {
                  cmPicks_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 80: {
                bitField0_ |= 0x00000008;
                cmPenalty_ = input.readUInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            players_ = java.util.Collections.unmodifiableList(players_);
          }
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            graphExperience_ = java.util.Collections.unmodifiableList(graphExperience_);
          }
          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
            graphGoldEarned_ = java.util.Collections.unmodifiableList(graphGoldEarned_);
          }
          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
            graphNetWorth_ = java.util.Collections.unmodifiableList(graphNetWorth_);
          }
          if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
            cmBans_ = java.util.Collections.unmodifiableList(cmBans_);
          }
          if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
            cmPicks_ = java.util.Collections.unmodifiableList(cmPicks_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder.class);
      }

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

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

      public interface PlayerKillOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.PlayerKill)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 victim_slot = 1;
         */
        boolean hasVictimSlot();
        /**
         * optional uint32 victim_slot = 1;
         */
        int getVictimSlot();

        /**
         * optional uint32 count = 2;
         */
        boolean hasCount();
        /**
         * optional uint32 count = 2;
         */
        int getCount();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.PlayerKill}
       */
      public static final class PlayerKill extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.PlayerKill)
          PlayerKillOrBuilder {
        // Use PlayerKill.newBuilder() to construct.
        private PlayerKill(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private PlayerKill(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final PlayerKill defaultInstance;
        public static PlayerKill getDefaultInstance() {
          return defaultInstance;
        }

        public PlayerKill getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private PlayerKill(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  victimSlot_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  count_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int VICTIM_SLOT_FIELD_NUMBER = 1;
        private int victimSlot_;
        /**
         * optional uint32 victim_slot = 1;
         */
        public boolean hasVictimSlot() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 victim_slot = 1;
         */
        public int getVictimSlot() {
          return victimSlot_;
        }

        public static final int COUNT_FIELD_NUMBER = 2;
        private int count_;
        /**
         * optional uint32 count = 2;
         */
        public boolean hasCount() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 count = 2;
         */
        public int getCount() {
          return count_;
        }

        private void initFields() {
          victimSlot_ = 0;
          count_ = 0;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, victimSlot_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, count_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, victimSlot_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, count_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.PlayerKill}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.PlayerKill)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            victimSlot_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            count_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.victimSlot_ = victimSlot_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.count_ = count_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.getDefaultInstance()) return this;
            if (other.hasVictimSlot()) {
              setVictimSlot(other.getVictimSlot());
            }
            if (other.hasCount()) {
              setCount(other.getCount());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int victimSlot_ ;
          /**
           * optional uint32 victim_slot = 1;
           */
          public boolean hasVictimSlot() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 victim_slot = 1;
           */
          public int getVictimSlot() {
            return victimSlot_;
          }
          /**
           * optional uint32 victim_slot = 1;
           */
          public Builder setVictimSlot(int value) {
            bitField0_ |= 0x00000001;
            victimSlot_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 victim_slot = 1;
           */
          public Builder clearVictimSlot() {
            bitField0_ = (bitField0_ & ~0x00000001);
            victimSlot_ = 0;
            onChanged();
            return this;
          }

          private int count_ ;
          /**
           * optional uint32 count = 2;
           */
          public boolean hasCount() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 count = 2;
           */
          public int getCount() {
            return count_;
          }
          /**
           * optional uint32 count = 2;
           */
          public Builder setCount(int value) {
            bitField0_ |= 0x00000002;
            count_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 count = 2;
           */
          public Builder clearCount() {
            bitField0_ = (bitField0_ & ~0x00000002);
            count_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.PlayerKill)
        }

        static {
          defaultInstance = new PlayerKill(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.PlayerKill)
      }

      public interface ItemPurchaseOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.ItemPurchase)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 item_id = 1;
         */
        boolean hasItemId();
        /**
         * optional uint32 item_id = 1;
         */
        int getItemId();

        /**
         * optional int32 purchase_time = 2;
         */
        boolean hasPurchaseTime();
        /**
         * optional int32 purchase_time = 2;
         */
        int getPurchaseTime();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.ItemPurchase}
       */
      public static final class ItemPurchase extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.ItemPurchase)
          ItemPurchaseOrBuilder {
        // Use ItemPurchase.newBuilder() to construct.
        private ItemPurchase(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private ItemPurchase(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final ItemPurchase defaultInstance;
        public static ItemPurchase getDefaultInstance() {
          return defaultInstance;
        }

        public ItemPurchase getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private ItemPurchase(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  itemId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  purchaseTime_ = input.readInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int ITEM_ID_FIELD_NUMBER = 1;
        private int itemId_;
        /**
         * optional uint32 item_id = 1;
         */
        public boolean hasItemId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 item_id = 1;
         */
        public int getItemId() {
          return itemId_;
        }

        public static final int PURCHASE_TIME_FIELD_NUMBER = 2;
        private int purchaseTime_;
        /**
         * optional int32 purchase_time = 2;
         */
        public boolean hasPurchaseTime() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional int32 purchase_time = 2;
         */
        public int getPurchaseTime() {
          return purchaseTime_;
        }

        private void initFields() {
          itemId_ = 0;
          purchaseTime_ = 0;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, itemId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeInt32(2, purchaseTime_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, itemId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(2, purchaseTime_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.ItemPurchase}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.ItemPurchase)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            itemId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            purchaseTime_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.itemId_ = itemId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.purchaseTime_ = purchaseTime_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.getDefaultInstance()) return this;
            if (other.hasItemId()) {
              setItemId(other.getItemId());
            }
            if (other.hasPurchaseTime()) {
              setPurchaseTime(other.getPurchaseTime());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int itemId_ ;
          /**
           * optional uint32 item_id = 1;
           */
          public boolean hasItemId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 item_id = 1;
           */
          public int getItemId() {
            return itemId_;
          }
          /**
           * optional uint32 item_id = 1;
           */
          public Builder setItemId(int value) {
            bitField0_ |= 0x00000001;
            itemId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 item_id = 1;
           */
          public Builder clearItemId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            itemId_ = 0;
            onChanged();
            return this;
          }

          private int purchaseTime_ ;
          /**
           * optional int32 purchase_time = 2;
           */
          public boolean hasPurchaseTime() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional int32 purchase_time = 2;
           */
          public int getPurchaseTime() {
            return purchaseTime_;
          }
          /**
           * optional int32 purchase_time = 2;
           */
          public Builder setPurchaseTime(int value) {
            bitField0_ |= 0x00000002;
            purchaseTime_ = value;
            onChanged();
            return this;
          }
          /**
           * optional int32 purchase_time = 2;
           */
          public Builder clearPurchaseTime() {
            bitField0_ = (bitField0_ & ~0x00000002);
            purchaseTime_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.ItemPurchase)
        }

        static {
          defaultInstance = new ItemPurchase(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.ItemPurchase)
      }

      public interface InventorySnapshotOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.InventorySnapshot)
          com.google.protobuf.MessageOrBuilder {

        /**
         * repeated uint32 item_id = 1;
         */
        java.util.List getItemIdList();
        /**
         * repeated uint32 item_id = 1;
         */
        int getItemIdCount();
        /**
         * repeated uint32 item_id = 1;
         */
        int getItemId(int index);

        /**
         * optional int32 game_time = 2;
         */
        boolean hasGameTime();
        /**
         * optional int32 game_time = 2;
         */
        int getGameTime();

        /**
         * optional uint32 kills = 3;
         */
        boolean hasKills();
        /**
         * optional uint32 kills = 3;
         */
        int getKills();

        /**
         * optional uint32 deaths = 4;
         */
        boolean hasDeaths();
        /**
         * optional uint32 deaths = 4;
         */
        int getDeaths();

        /**
         * optional uint32 assists = 5;
         */
        boolean hasAssists();
        /**
         * optional uint32 assists = 5;
         */
        int getAssists();

        /**
         * optional uint32 level = 6;
         */
        boolean hasLevel();
        /**
         * optional uint32 level = 6;
         */
        int getLevel();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.InventorySnapshot}
       */
      public static final class InventorySnapshot extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.InventorySnapshot)
          InventorySnapshotOrBuilder {
        // Use InventorySnapshot.newBuilder() to construct.
        private InventorySnapshot(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private InventorySnapshot(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final InventorySnapshot defaultInstance;
        public static InventorySnapshot getDefaultInstance() {
          return defaultInstance;
        }

        public InventorySnapshot getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private InventorySnapshot(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    itemId_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  itemId_.add(input.readUInt32());
                  break;
                }
                case 10: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    itemId_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    itemId_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000001;
                  gameTime_ = input.readInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000002;
                  kills_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000004;
                  deaths_ = input.readUInt32();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000008;
                  assists_ = input.readUInt32();
                  break;
                }
                case 48: {
                  bitField0_ |= 0x00000010;
                  level_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
              itemId_ = java.util.Collections.unmodifiableList(itemId_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int ITEM_ID_FIELD_NUMBER = 1;
        private java.util.List itemId_;
        /**
         * repeated uint32 item_id = 1;
         */
        public java.util.List
            getItemIdList() {
          return itemId_;
        }
        /**
         * repeated uint32 item_id = 1;
         */
        public int getItemIdCount() {
          return itemId_.size();
        }
        /**
         * repeated uint32 item_id = 1;
         */
        public int getItemId(int index) {
          return itemId_.get(index);
        }

        public static final int GAME_TIME_FIELD_NUMBER = 2;
        private int gameTime_;
        /**
         * optional int32 game_time = 2;
         */
        public boolean hasGameTime() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional int32 game_time = 2;
         */
        public int getGameTime() {
          return gameTime_;
        }

        public static final int KILLS_FIELD_NUMBER = 3;
        private int kills_;
        /**
         * optional uint32 kills = 3;
         */
        public boolean hasKills() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 kills = 3;
         */
        public int getKills() {
          return kills_;
        }

        public static final int DEATHS_FIELD_NUMBER = 4;
        private int deaths_;
        /**
         * optional uint32 deaths = 4;
         */
        public boolean hasDeaths() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 deaths = 4;
         */
        public int getDeaths() {
          return deaths_;
        }

        public static final int ASSISTS_FIELD_NUMBER = 5;
        private int assists_;
        /**
         * optional uint32 assists = 5;
         */
        public boolean hasAssists() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 assists = 5;
         */
        public int getAssists() {
          return assists_;
        }

        public static final int LEVEL_FIELD_NUMBER = 6;
        private int level_;
        /**
         * optional uint32 level = 6;
         */
        public boolean hasLevel() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 level = 6;
         */
        public int getLevel() {
          return level_;
        }

        private void initFields() {
          itemId_ = java.util.Collections.emptyList();
          gameTime_ = 0;
          kills_ = 0;
          deaths_ = 0;
          assists_ = 0;
          level_ = 0;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          for (int i = 0; i < itemId_.size(); i++) {
            output.writeUInt32(1, itemId_.get(i));
          }
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeInt32(2, gameTime_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(3, kills_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(4, deaths_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(5, assists_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeUInt32(6, level_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          {
            int dataSize = 0;
            for (int i = 0; i < itemId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(itemId_.get(i));
            }
            size += dataSize;
            size += 1 * getItemIdList().size();
          }
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(2, gameTime_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, kills_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, deaths_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(5, assists_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(6, level_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.InventorySnapshot}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.InventorySnapshot)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            itemId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            gameTime_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            kills_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            deaths_ = 0;
            bitField0_ = (bitField0_ & ~0x00000008);
            assists_ = 0;
            bitField0_ = (bitField0_ & ~0x00000010);
            level_ = 0;
            bitField0_ = (bitField0_ & ~0x00000020);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              itemId_ = java.util.Collections.unmodifiableList(itemId_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.itemId_ = itemId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000001;
            }
            result.gameTime_ = gameTime_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000002;
            }
            result.kills_ = kills_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000004;
            }
            result.deaths_ = deaths_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000008;
            }
            result.assists_ = assists_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000010;
            }
            result.level_ = level_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.getDefaultInstance()) return this;
            if (!other.itemId_.isEmpty()) {
              if (itemId_.isEmpty()) {
                itemId_ = other.itemId_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureItemIdIsMutable();
                itemId_.addAll(other.itemId_);
              }
              onChanged();
            }
            if (other.hasGameTime()) {
              setGameTime(other.getGameTime());
            }
            if (other.hasKills()) {
              setKills(other.getKills());
            }
            if (other.hasDeaths()) {
              setDeaths(other.getDeaths());
            }
            if (other.hasAssists()) {
              setAssists(other.getAssists());
            }
            if (other.hasLevel()) {
              setLevel(other.getLevel());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private java.util.List itemId_ = java.util.Collections.emptyList();
          private void ensureItemIdIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              itemId_ = new java.util.ArrayList(itemId_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public java.util.List
              getItemIdList() {
            return java.util.Collections.unmodifiableList(itemId_);
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public int getItemIdCount() {
            return itemId_.size();
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public int getItemId(int index) {
            return itemId_.get(index);
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public Builder setItemId(
              int index, int value) {
            ensureItemIdIsMutable();
            itemId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public Builder addItemId(int value) {
            ensureItemIdIsMutable();
            itemId_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public Builder addAllItemId(
              java.lang.Iterable values) {
            ensureItemIdIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, itemId_);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public Builder clearItemId() {
            itemId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }

          private int gameTime_ ;
          /**
           * optional int32 game_time = 2;
           */
          public boolean hasGameTime() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional int32 game_time = 2;
           */
          public int getGameTime() {
            return gameTime_;
          }
          /**
           * optional int32 game_time = 2;
           */
          public Builder setGameTime(int value) {
            bitField0_ |= 0x00000002;
            gameTime_ = value;
            onChanged();
            return this;
          }
          /**
           * optional int32 game_time = 2;
           */
          public Builder clearGameTime() {
            bitField0_ = (bitField0_ & ~0x00000002);
            gameTime_ = 0;
            onChanged();
            return this;
          }

          private int kills_ ;
          /**
           * optional uint32 kills = 3;
           */
          public boolean hasKills() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 kills = 3;
           */
          public int getKills() {
            return kills_;
          }
          /**
           * optional uint32 kills = 3;
           */
          public Builder setKills(int value) {
            bitField0_ |= 0x00000004;
            kills_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 kills = 3;
           */
          public Builder clearKills() {
            bitField0_ = (bitField0_ & ~0x00000004);
            kills_ = 0;
            onChanged();
            return this;
          }

          private int deaths_ ;
          /**
           * optional uint32 deaths = 4;
           */
          public boolean hasDeaths() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 deaths = 4;
           */
          public int getDeaths() {
            return deaths_;
          }
          /**
           * optional uint32 deaths = 4;
           */
          public Builder setDeaths(int value) {
            bitField0_ |= 0x00000008;
            deaths_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 deaths = 4;
           */
          public Builder clearDeaths() {
            bitField0_ = (bitField0_ & ~0x00000008);
            deaths_ = 0;
            onChanged();
            return this;
          }

          private int assists_ ;
          /**
           * optional uint32 assists = 5;
           */
          public boolean hasAssists() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 assists = 5;
           */
          public int getAssists() {
            return assists_;
          }
          /**
           * optional uint32 assists = 5;
           */
          public Builder setAssists(int value) {
            bitField0_ |= 0x00000010;
            assists_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 assists = 5;
           */
          public Builder clearAssists() {
            bitField0_ = (bitField0_ & ~0x00000010);
            assists_ = 0;
            onChanged();
            return this;
          }

          private int level_ ;
          /**
           * optional uint32 level = 6;
           */
          public boolean hasLevel() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional uint32 level = 6;
           */
          public int getLevel() {
            return level_;
          }
          /**
           * optional uint32 level = 6;
           */
          public Builder setLevel(int value) {
            bitField0_ |= 0x00000020;
            level_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 level = 6;
           */
          public Builder clearLevel() {
            bitField0_ = (bitField0_ & ~0x00000020);
            level_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.InventorySnapshot)
        }

        static {
          defaultInstance = new InventorySnapshot(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.InventorySnapshot)
      }

      public interface AutoStyleCriteriaOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.AutoStyleCriteria)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 name_token = 1;
         */
        boolean hasNameToken();
        /**
         * optional uint32 name_token = 1;
         */
        int getNameToken();

        /**
         * optional float value = 2;
         */
        boolean hasValue();
        /**
         * optional float value = 2;
         */
        float getValue();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.AutoStyleCriteria}
       */
      public static final class AutoStyleCriteria extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.AutoStyleCriteria)
          AutoStyleCriteriaOrBuilder {
        // Use AutoStyleCriteria.newBuilder() to construct.
        private AutoStyleCriteria(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private AutoStyleCriteria(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final AutoStyleCriteria defaultInstance;
        public static AutoStyleCriteria getDefaultInstance() {
          return defaultInstance;
        }

        public AutoStyleCriteria getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private AutoStyleCriteria(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  nameToken_ = input.readUInt32();
                  break;
                }
                case 21: {
                  bitField0_ |= 0x00000002;
                  value_ = input.readFloat();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int NAME_TOKEN_FIELD_NUMBER = 1;
        private int nameToken_;
        /**
         * optional uint32 name_token = 1;
         */
        public boolean hasNameToken() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 name_token = 1;
         */
        public int getNameToken() {
          return nameToken_;
        }

        public static final int VALUE_FIELD_NUMBER = 2;
        private float value_;
        /**
         * optional float value = 2;
         */
        public boolean hasValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional float value = 2;
         */
        public float getValue() {
          return value_;
        }

        private void initFields() {
          nameToken_ = 0;
          value_ = 0F;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, nameToken_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeFloat(2, value_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, nameToken_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(2, value_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.AutoStyleCriteria}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.AutoStyleCriteria)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            nameToken_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            value_ = 0F;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.nameToken_ = nameToken_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.value_ = value_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.getDefaultInstance()) return this;
            if (other.hasNameToken()) {
              setNameToken(other.getNameToken());
            }
            if (other.hasValue()) {
              setValue(other.getValue());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int nameToken_ ;
          /**
           * optional uint32 name_token = 1;
           */
          public boolean hasNameToken() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 name_token = 1;
           */
          public int getNameToken() {
            return nameToken_;
          }
          /**
           * optional uint32 name_token = 1;
           */
          public Builder setNameToken(int value) {
            bitField0_ |= 0x00000001;
            nameToken_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 name_token = 1;
           */
          public Builder clearNameToken() {
            bitField0_ = (bitField0_ & ~0x00000001);
            nameToken_ = 0;
            onChanged();
            return this;
          }

          private float value_ ;
          /**
           * optional float value = 2;
           */
          public boolean hasValue() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional float value = 2;
           */
          public float getValue() {
            return value_;
          }
          /**
           * optional float value = 2;
           */
          public Builder setValue(float value) {
            bitField0_ |= 0x00000002;
            value_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float value = 2;
           */
          public Builder clearValue() {
            bitField0_ = (bitField0_ & ~0x00000002);
            value_ = 0F;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.AutoStyleCriteria)
        }

        static {
          defaultInstance = new AutoStyleCriteria(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.AutoStyleCriteria)
      }

      public interface StrangeGemProgressOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.StrangeGemProgress)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 kill_eater_type = 1;
         */
        boolean hasKillEaterType();
        /**
         * optional uint32 kill_eater_type = 1;
         */
        int getKillEaterType();

        /**
         * optional uint32 gem_item_def_index = 2;
         */
        boolean hasGemItemDefIndex();
        /**
         * optional uint32 gem_item_def_index = 2;
         */
        int getGemItemDefIndex();

        /**
         * optional uint32 required_hero_id = 3;
         */
        boolean hasRequiredHeroId();
        /**
         * optional uint32 required_hero_id = 3;
         */
        int getRequiredHeroId();

        /**
         * optional uint32 starting_value = 4;
         */
        boolean hasStartingValue();
        /**
         * optional uint32 starting_value = 4;
         */
        int getStartingValue();

        /**
         * optional uint32 ending_value = 5;
         */
        boolean hasEndingValue();
        /**
         * optional uint32 ending_value = 5;
         */
        int getEndingValue();

        /**
         * optional uint32 owner_item_def_index = 6;
         */
        boolean hasOwnerItemDefIndex();
        /**
         * optional uint32 owner_item_def_index = 6;
         */
        int getOwnerItemDefIndex();

        /**
         * optional uint64 owner_item_id = 7;
         */
        boolean hasOwnerItemId();
        /**
         * optional uint64 owner_item_id = 7;
         */
        long getOwnerItemId();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.StrangeGemProgress}
       */
      public static final class StrangeGemProgress extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.StrangeGemProgress)
          StrangeGemProgressOrBuilder {
        // Use StrangeGemProgress.newBuilder() to construct.
        private StrangeGemProgress(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private StrangeGemProgress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final StrangeGemProgress defaultInstance;
        public static StrangeGemProgress getDefaultInstance() {
          return defaultInstance;
        }

        public StrangeGemProgress getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private StrangeGemProgress(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  killEaterType_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  gemItemDefIndex_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  requiredHeroId_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  startingValue_ = input.readUInt32();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000010;
                  endingValue_ = input.readUInt32();
                  break;
                }
                case 48: {
                  bitField0_ |= 0x00000020;
                  ownerItemDefIndex_ = input.readUInt32();
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000040;
                  ownerItemId_ = input.readUInt64();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int KILL_EATER_TYPE_FIELD_NUMBER = 1;
        private int killEaterType_;
        /**
         * optional uint32 kill_eater_type = 1;
         */
        public boolean hasKillEaterType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 kill_eater_type = 1;
         */
        public int getKillEaterType() {
          return killEaterType_;
        }

        public static final int GEM_ITEM_DEF_INDEX_FIELD_NUMBER = 2;
        private int gemItemDefIndex_;
        /**
         * optional uint32 gem_item_def_index = 2;
         */
        public boolean hasGemItemDefIndex() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 gem_item_def_index = 2;
         */
        public int getGemItemDefIndex() {
          return gemItemDefIndex_;
        }

        public static final int REQUIRED_HERO_ID_FIELD_NUMBER = 3;
        private int requiredHeroId_;
        /**
         * optional uint32 required_hero_id = 3;
         */
        public boolean hasRequiredHeroId() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 required_hero_id = 3;
         */
        public int getRequiredHeroId() {
          return requiredHeroId_;
        }

        public static final int STARTING_VALUE_FIELD_NUMBER = 4;
        private int startingValue_;
        /**
         * optional uint32 starting_value = 4;
         */
        public boolean hasStartingValue() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 starting_value = 4;
         */
        public int getStartingValue() {
          return startingValue_;
        }

        public static final int ENDING_VALUE_FIELD_NUMBER = 5;
        private int endingValue_;
        /**
         * optional uint32 ending_value = 5;
         */
        public boolean hasEndingValue() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 ending_value = 5;
         */
        public int getEndingValue() {
          return endingValue_;
        }

        public static final int OWNER_ITEM_DEF_INDEX_FIELD_NUMBER = 6;
        private int ownerItemDefIndex_;
        /**
         * optional uint32 owner_item_def_index = 6;
         */
        public boolean hasOwnerItemDefIndex() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional uint32 owner_item_def_index = 6;
         */
        public int getOwnerItemDefIndex() {
          return ownerItemDefIndex_;
        }

        public static final int OWNER_ITEM_ID_FIELD_NUMBER = 7;
        private long ownerItemId_;
        /**
         * optional uint64 owner_item_id = 7;
         */
        public boolean hasOwnerItemId() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint64 owner_item_id = 7;
         */
        public long getOwnerItemId() {
          return ownerItemId_;
        }

        private void initFields() {
          killEaterType_ = 0;
          gemItemDefIndex_ = 0;
          requiredHeroId_ = 0;
          startingValue_ = 0;
          endingValue_ = 0;
          ownerItemDefIndex_ = 0;
          ownerItemId_ = 0L;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, killEaterType_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, gemItemDefIndex_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, requiredHeroId_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(4, startingValue_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeUInt32(5, endingValue_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeUInt32(6, ownerItemDefIndex_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeUInt64(7, ownerItemId_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, killEaterType_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, gemItemDefIndex_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, requiredHeroId_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, startingValue_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(5, endingValue_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(6, ownerItemDefIndex_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(7, ownerItemId_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.StrangeGemProgress}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.StrangeGemProgress)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            killEaterType_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            gemItemDefIndex_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            requiredHeroId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            startingValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000008);
            endingValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000010);
            ownerItemDefIndex_ = 0;
            bitField0_ = (bitField0_ & ~0x00000020);
            ownerItemId_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000040);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.killEaterType_ = killEaterType_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.gemItemDefIndex_ = gemItemDefIndex_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.requiredHeroId_ = requiredHeroId_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.startingValue_ = startingValue_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000010;
            }
            result.endingValue_ = endingValue_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000020;
            }
            result.ownerItemDefIndex_ = ownerItemDefIndex_;
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000040;
            }
            result.ownerItemId_ = ownerItemId_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.getDefaultInstance()) return this;
            if (other.hasKillEaterType()) {
              setKillEaterType(other.getKillEaterType());
            }
            if (other.hasGemItemDefIndex()) {
              setGemItemDefIndex(other.getGemItemDefIndex());
            }
            if (other.hasRequiredHeroId()) {
              setRequiredHeroId(other.getRequiredHeroId());
            }
            if (other.hasStartingValue()) {
              setStartingValue(other.getStartingValue());
            }
            if (other.hasEndingValue()) {
              setEndingValue(other.getEndingValue());
            }
            if (other.hasOwnerItemDefIndex()) {
              setOwnerItemDefIndex(other.getOwnerItemDefIndex());
            }
            if (other.hasOwnerItemId()) {
              setOwnerItemId(other.getOwnerItemId());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int killEaterType_ ;
          /**
           * optional uint32 kill_eater_type = 1;
           */
          public boolean hasKillEaterType() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 kill_eater_type = 1;
           */
          public int getKillEaterType() {
            return killEaterType_;
          }
          /**
           * optional uint32 kill_eater_type = 1;
           */
          public Builder setKillEaterType(int value) {
            bitField0_ |= 0x00000001;
            killEaterType_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 kill_eater_type = 1;
           */
          public Builder clearKillEaterType() {
            bitField0_ = (bitField0_ & ~0x00000001);
            killEaterType_ = 0;
            onChanged();
            return this;
          }

          private int gemItemDefIndex_ ;
          /**
           * optional uint32 gem_item_def_index = 2;
           */
          public boolean hasGemItemDefIndex() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 gem_item_def_index = 2;
           */
          public int getGemItemDefIndex() {
            return gemItemDefIndex_;
          }
          /**
           * optional uint32 gem_item_def_index = 2;
           */
          public Builder setGemItemDefIndex(int value) {
            bitField0_ |= 0x00000002;
            gemItemDefIndex_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 gem_item_def_index = 2;
           */
          public Builder clearGemItemDefIndex() {
            bitField0_ = (bitField0_ & ~0x00000002);
            gemItemDefIndex_ = 0;
            onChanged();
            return this;
          }

          private int requiredHeroId_ ;
          /**
           * optional uint32 required_hero_id = 3;
           */
          public boolean hasRequiredHeroId() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 required_hero_id = 3;
           */
          public int getRequiredHeroId() {
            return requiredHeroId_;
          }
          /**
           * optional uint32 required_hero_id = 3;
           */
          public Builder setRequiredHeroId(int value) {
            bitField0_ |= 0x00000004;
            requiredHeroId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 required_hero_id = 3;
           */
          public Builder clearRequiredHeroId() {
            bitField0_ = (bitField0_ & ~0x00000004);
            requiredHeroId_ = 0;
            onChanged();
            return this;
          }

          private int startingValue_ ;
          /**
           * optional uint32 starting_value = 4;
           */
          public boolean hasStartingValue() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 starting_value = 4;
           */
          public int getStartingValue() {
            return startingValue_;
          }
          /**
           * optional uint32 starting_value = 4;
           */
          public Builder setStartingValue(int value) {
            bitField0_ |= 0x00000008;
            startingValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 starting_value = 4;
           */
          public Builder clearStartingValue() {
            bitField0_ = (bitField0_ & ~0x00000008);
            startingValue_ = 0;
            onChanged();
            return this;
          }

          private int endingValue_ ;
          /**
           * optional uint32 ending_value = 5;
           */
          public boolean hasEndingValue() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 ending_value = 5;
           */
          public int getEndingValue() {
            return endingValue_;
          }
          /**
           * optional uint32 ending_value = 5;
           */
          public Builder setEndingValue(int value) {
            bitField0_ |= 0x00000010;
            endingValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 ending_value = 5;
           */
          public Builder clearEndingValue() {
            bitField0_ = (bitField0_ & ~0x00000010);
            endingValue_ = 0;
            onChanged();
            return this;
          }

          private int ownerItemDefIndex_ ;
          /**
           * optional uint32 owner_item_def_index = 6;
           */
          public boolean hasOwnerItemDefIndex() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional uint32 owner_item_def_index = 6;
           */
          public int getOwnerItemDefIndex() {
            return ownerItemDefIndex_;
          }
          /**
           * optional uint32 owner_item_def_index = 6;
           */
          public Builder setOwnerItemDefIndex(int value) {
            bitField0_ |= 0x00000020;
            ownerItemDefIndex_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 owner_item_def_index = 6;
           */
          public Builder clearOwnerItemDefIndex() {
            bitField0_ = (bitField0_ & ~0x00000020);
            ownerItemDefIndex_ = 0;
            onChanged();
            return this;
          }

          private long ownerItemId_ ;
          /**
           * optional uint64 owner_item_id = 7;
           */
          public boolean hasOwnerItemId() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint64 owner_item_id = 7;
           */
          public long getOwnerItemId() {
            return ownerItemId_;
          }
          /**
           * optional uint64 owner_item_id = 7;
           */
          public Builder setOwnerItemId(long value) {
            bitField0_ |= 0x00000040;
            ownerItemId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint64 owner_item_id = 7;
           */
          public Builder clearOwnerItemId() {
            bitField0_ = (bitField0_ & ~0x00000040);
            ownerItemId_ = 0L;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.StrangeGemProgress)
        }

        static {
          defaultInstance = new StrangeGemProgress(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.StrangeGemProgress)
      }

      public interface VictoryPredictionOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.VictoryPrediction)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint64 item_id = 1;
         */
        boolean hasItemId();
        /**
         * optional uint64 item_id = 1;
         */
        long getItemId();

        /**
         * optional uint32 item_def_index = 2;
         */
        boolean hasItemDefIndex();
        /**
         * optional uint32 item_def_index = 2;
         */
        int getItemDefIndex();

        /**
         * optional uint32 starting_value = 3;
         */
        boolean hasStartingValue();
        /**
         * optional uint32 starting_value = 3;
         */
        int getStartingValue();

        /**
         * optional bool is_victory = 4;
         */
        boolean hasIsVictory();
        /**
         * optional bool is_victory = 4;
         */
        boolean getIsVictory();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.VictoryPrediction}
       */
      public static final class VictoryPrediction extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.VictoryPrediction)
          VictoryPredictionOrBuilder {
        // Use VictoryPrediction.newBuilder() to construct.
        private VictoryPrediction(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private VictoryPrediction(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final VictoryPrediction defaultInstance;
        public static VictoryPrediction getDefaultInstance() {
          return defaultInstance;
        }

        public VictoryPrediction getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private VictoryPrediction(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  itemId_ = input.readUInt64();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  itemDefIndex_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  startingValue_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  isVictory_ = input.readBool();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int ITEM_ID_FIELD_NUMBER = 1;
        private long itemId_;
        /**
         * optional uint64 item_id = 1;
         */
        public boolean hasItemId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint64 item_id = 1;
         */
        public long getItemId() {
          return itemId_;
        }

        public static final int ITEM_DEF_INDEX_FIELD_NUMBER = 2;
        private int itemDefIndex_;
        /**
         * optional uint32 item_def_index = 2;
         */
        public boolean hasItemDefIndex() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 item_def_index = 2;
         */
        public int getItemDefIndex() {
          return itemDefIndex_;
        }

        public static final int STARTING_VALUE_FIELD_NUMBER = 3;
        private int startingValue_;
        /**
         * optional uint32 starting_value = 3;
         */
        public boolean hasStartingValue() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 starting_value = 3;
         */
        public int getStartingValue() {
          return startingValue_;
        }

        public static final int IS_VICTORY_FIELD_NUMBER = 4;
        private boolean isVictory_;
        /**
         * optional bool is_victory = 4;
         */
        public boolean hasIsVictory() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional bool is_victory = 4;
         */
        public boolean getIsVictory() {
          return isVictory_;
        }

        private void initFields() {
          itemId_ = 0L;
          itemDefIndex_ = 0;
          startingValue_ = 0;
          isVictory_ = false;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt64(1, itemId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, itemDefIndex_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, startingValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeBool(4, isVictory_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(1, itemId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, itemDefIndex_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, startingValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(4, isVictory_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.VictoryPrediction}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.VictoryPrediction)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            itemId_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000001);
            itemDefIndex_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            startingValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            isVictory_ = false;
            bitField0_ = (bitField0_ & ~0x00000008);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.itemId_ = itemId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.itemDefIndex_ = itemDefIndex_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.startingValue_ = startingValue_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.isVictory_ = isVictory_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.getDefaultInstance()) return this;
            if (other.hasItemId()) {
              setItemId(other.getItemId());
            }
            if (other.hasItemDefIndex()) {
              setItemDefIndex(other.getItemDefIndex());
            }
            if (other.hasStartingValue()) {
              setStartingValue(other.getStartingValue());
            }
            if (other.hasIsVictory()) {
              setIsVictory(other.getIsVictory());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private long itemId_ ;
          /**
           * optional uint64 item_id = 1;
           */
          public boolean hasItemId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint64 item_id = 1;
           */
          public long getItemId() {
            return itemId_;
          }
          /**
           * optional uint64 item_id = 1;
           */
          public Builder setItemId(long value) {
            bitField0_ |= 0x00000001;
            itemId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint64 item_id = 1;
           */
          public Builder clearItemId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            itemId_ = 0L;
            onChanged();
            return this;
          }

          private int itemDefIndex_ ;
          /**
           * optional uint32 item_def_index = 2;
           */
          public boolean hasItemDefIndex() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 item_def_index = 2;
           */
          public int getItemDefIndex() {
            return itemDefIndex_;
          }
          /**
           * optional uint32 item_def_index = 2;
           */
          public Builder setItemDefIndex(int value) {
            bitField0_ |= 0x00000002;
            itemDefIndex_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 item_def_index = 2;
           */
          public Builder clearItemDefIndex() {
            bitField0_ = (bitField0_ & ~0x00000002);
            itemDefIndex_ = 0;
            onChanged();
            return this;
          }

          private int startingValue_ ;
          /**
           * optional uint32 starting_value = 3;
           */
          public boolean hasStartingValue() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 starting_value = 3;
           */
          public int getStartingValue() {
            return startingValue_;
          }
          /**
           * optional uint32 starting_value = 3;
           */
          public Builder setStartingValue(int value) {
            bitField0_ |= 0x00000004;
            startingValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 starting_value = 3;
           */
          public Builder clearStartingValue() {
            bitField0_ = (bitField0_ & ~0x00000004);
            startingValue_ = 0;
            onChanged();
            return this;
          }

          private boolean isVictory_ ;
          /**
           * optional bool is_victory = 4;
           */
          public boolean hasIsVictory() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional bool is_victory = 4;
           */
          public boolean getIsVictory() {
            return isVictory_;
          }
          /**
           * optional bool is_victory = 4;
           */
          public Builder setIsVictory(boolean value) {
            bitField0_ |= 0x00000008;
            isVictory_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool is_victory = 4;
           */
          public Builder clearIsVictory() {
            bitField0_ = (bitField0_ & ~0x00000008);
            isVictory_ = false;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.VictoryPrediction)
        }

        static {
          defaultInstance = new VictoryPrediction(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.VictoryPrediction)
      }

      public interface SubChallengeOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.SubChallenge)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 slot_id = 1;
         */
        boolean hasSlotId();
        /**
         * optional uint32 slot_id = 1;
         */
        int getSlotId();

        /**
         * optional uint32 start_value = 2;
         */
        boolean hasStartValue();
        /**
         * optional uint32 start_value = 2;
         */
        int getStartValue();

        /**
         * optional uint32 end_value = 3;
         */
        boolean hasEndValue();
        /**
         * optional uint32 end_value = 3;
         */
        int getEndValue();

        /**
         * optional bool completed = 4;
         */
        boolean hasCompleted();
        /**
         * optional bool completed = 4;
         */
        boolean getCompleted();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.SubChallenge}
       */
      public static final class SubChallenge extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.SubChallenge)
          SubChallengeOrBuilder {
        // Use SubChallenge.newBuilder() to construct.
        private SubChallenge(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private SubChallenge(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final SubChallenge defaultInstance;
        public static SubChallenge getDefaultInstance() {
          return defaultInstance;
        }

        public SubChallenge getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private SubChallenge(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  slotId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  startValue_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  endValue_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  completed_ = input.readBool();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int SLOT_ID_FIELD_NUMBER = 1;
        private int slotId_;
        /**
         * optional uint32 slot_id = 1;
         */
        public boolean hasSlotId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 slot_id = 1;
         */
        public int getSlotId() {
          return slotId_;
        }

        public static final int START_VALUE_FIELD_NUMBER = 2;
        private int startValue_;
        /**
         * optional uint32 start_value = 2;
         */
        public boolean hasStartValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 start_value = 2;
         */
        public int getStartValue() {
          return startValue_;
        }

        public static final int END_VALUE_FIELD_NUMBER = 3;
        private int endValue_;
        /**
         * optional uint32 end_value = 3;
         */
        public boolean hasEndValue() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 end_value = 3;
         */
        public int getEndValue() {
          return endValue_;
        }

        public static final int COMPLETED_FIELD_NUMBER = 4;
        private boolean completed_;
        /**
         * optional bool completed = 4;
         */
        public boolean hasCompleted() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional bool completed = 4;
         */
        public boolean getCompleted() {
          return completed_;
        }

        private void initFields() {
          slotId_ = 0;
          startValue_ = 0;
          endValue_ = 0;
          completed_ = false;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, slotId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, startValue_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, endValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeBool(4, completed_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, slotId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, startValue_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, endValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(4, completed_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.SubChallenge}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.SubChallenge)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            slotId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            startValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            endValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            completed_ = false;
            bitField0_ = (bitField0_ & ~0x00000008);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.slotId_ = slotId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.startValue_ = startValue_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.endValue_ = endValue_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.completed_ = completed_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.getDefaultInstance()) return this;
            if (other.hasSlotId()) {
              setSlotId(other.getSlotId());
            }
            if (other.hasStartValue()) {
              setStartValue(other.getStartValue());
            }
            if (other.hasEndValue()) {
              setEndValue(other.getEndValue());
            }
            if (other.hasCompleted()) {
              setCompleted(other.getCompleted());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int slotId_ ;
          /**
           * optional uint32 slot_id = 1;
           */
          public boolean hasSlotId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 slot_id = 1;
           */
          public int getSlotId() {
            return slotId_;
          }
          /**
           * optional uint32 slot_id = 1;
           */
          public Builder setSlotId(int value) {
            bitField0_ |= 0x00000001;
            slotId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 slot_id = 1;
           */
          public Builder clearSlotId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            slotId_ = 0;
            onChanged();
            return this;
          }

          private int startValue_ ;
          /**
           * optional uint32 start_value = 2;
           */
          public boolean hasStartValue() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 start_value = 2;
           */
          public int getStartValue() {
            return startValue_;
          }
          /**
           * optional uint32 start_value = 2;
           */
          public Builder setStartValue(int value) {
            bitField0_ |= 0x00000002;
            startValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 start_value = 2;
           */
          public Builder clearStartValue() {
            bitField0_ = (bitField0_ & ~0x00000002);
            startValue_ = 0;
            onChanged();
            return this;
          }

          private int endValue_ ;
          /**
           * optional uint32 end_value = 3;
           */
          public boolean hasEndValue() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 end_value = 3;
           */
          public int getEndValue() {
            return endValue_;
          }
          /**
           * optional uint32 end_value = 3;
           */
          public Builder setEndValue(int value) {
            bitField0_ |= 0x00000004;
            endValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 end_value = 3;
           */
          public Builder clearEndValue() {
            bitField0_ = (bitField0_ & ~0x00000004);
            endValue_ = 0;
            onChanged();
            return this;
          }

          private boolean completed_ ;
          /**
           * optional bool completed = 4;
           */
          public boolean hasCompleted() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional bool completed = 4;
           */
          public boolean getCompleted() {
            return completed_;
          }
          /**
           * optional bool completed = 4;
           */
          public Builder setCompleted(boolean value) {
            bitField0_ |= 0x00000008;
            completed_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool completed = 4;
           */
          public Builder clearCompleted() {
            bitField0_ = (bitField0_ & ~0x00000008);
            completed_ = false;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.SubChallenge)
        }

        static {
          defaultInstance = new SubChallenge(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.SubChallenge)
      }

      public interface CavernChallengeResultOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.CavernChallengeResult)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 completed_path_id = 1;
         */
        boolean hasCompletedPathId();
        /**
         * optional uint32 completed_path_id = 1;
         */
        int getCompletedPathId();

        /**
         * optional uint32 claimed_room_id = 2;
         */
        boolean hasClaimedRoomId();
        /**
         * optional uint32 claimed_room_id = 2;
         */
        int getClaimedRoomId();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.CavernChallengeResult}
       */
      public static final class CavernChallengeResult extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.CavernChallengeResult)
          CavernChallengeResultOrBuilder {
        // Use CavernChallengeResult.newBuilder() to construct.
        private CavernChallengeResult(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private CavernChallengeResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final CavernChallengeResult defaultInstance;
        public static CavernChallengeResult getDefaultInstance() {
          return defaultInstance;
        }

        public CavernChallengeResult getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private CavernChallengeResult(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  completedPathId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  claimedRoomId_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int COMPLETED_PATH_ID_FIELD_NUMBER = 1;
        private int completedPathId_;
        /**
         * optional uint32 completed_path_id = 1;
         */
        public boolean hasCompletedPathId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 completed_path_id = 1;
         */
        public int getCompletedPathId() {
          return completedPathId_;
        }

        public static final int CLAIMED_ROOM_ID_FIELD_NUMBER = 2;
        private int claimedRoomId_;
        /**
         * optional uint32 claimed_room_id = 2;
         */
        public boolean hasClaimedRoomId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 claimed_room_id = 2;
         */
        public int getClaimedRoomId() {
          return claimedRoomId_;
        }

        private void initFields() {
          completedPathId_ = 0;
          claimedRoomId_ = 0;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, completedPathId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, claimedRoomId_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, completedPathId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, claimedRoomId_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.CavernChallengeResult}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.CavernChallengeResult)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            completedPathId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            claimedRoomId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.completedPathId_ = completedPathId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.claimedRoomId_ = claimedRoomId_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.getDefaultInstance()) return this;
            if (other.hasCompletedPathId()) {
              setCompletedPathId(other.getCompletedPathId());
            }
            if (other.hasClaimedRoomId()) {
              setClaimedRoomId(other.getClaimedRoomId());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int completedPathId_ ;
          /**
           * optional uint32 completed_path_id = 1;
           */
          public boolean hasCompletedPathId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 completed_path_id = 1;
           */
          public int getCompletedPathId() {
            return completedPathId_;
          }
          /**
           * optional uint32 completed_path_id = 1;
           */
          public Builder setCompletedPathId(int value) {
            bitField0_ |= 0x00000001;
            completedPathId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 completed_path_id = 1;
           */
          public Builder clearCompletedPathId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            completedPathId_ = 0;
            onChanged();
            return this;
          }

          private int claimedRoomId_ ;
          /**
           * optional uint32 claimed_room_id = 2;
           */
          public boolean hasClaimedRoomId() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 claimed_room_id = 2;
           */
          public int getClaimedRoomId() {
            return claimedRoomId_;
          }
          /**
           * optional uint32 claimed_room_id = 2;
           */
          public Builder setClaimedRoomId(int value) {
            bitField0_ |= 0x00000002;
            claimedRoomId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 claimed_room_id = 2;
           */
          public Builder clearClaimedRoomId() {
            bitField0_ = (bitField0_ & ~0x00000002);
            claimedRoomId_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.CavernChallengeResult)
        }

        static {
          defaultInstance = new CavernChallengeResult(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.CavernChallengeResult)
      }

      public interface ActionGrantOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.ActionGrant)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 action_id = 1;
         */
        boolean hasActionId();
        /**
         * optional uint32 action_id = 1;
         */
        int getActionId();

        /**
         * optional uint32 quantity = 2;
         */
        boolean hasQuantity();
        /**
         * optional uint32 quantity = 2;
         */
        int getQuantity();

        /**
         * optional uint32 audit = 3;
         */
        boolean hasAudit();
        /**
         * optional uint32 audit = 3;
         */
        int getAudit();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.ActionGrant}
       */
      public static final class ActionGrant extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.ActionGrant)
          ActionGrantOrBuilder {
        // Use ActionGrant.newBuilder() to construct.
        private ActionGrant(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private ActionGrant(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final ActionGrant defaultInstance;
        public static ActionGrant getDefaultInstance() {
          return defaultInstance;
        }

        public ActionGrant getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private ActionGrant(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  actionId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  quantity_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  audit_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int ACTION_ID_FIELD_NUMBER = 1;
        private int actionId_;
        /**
         * optional uint32 action_id = 1;
         */
        public boolean hasActionId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 action_id = 1;
         */
        public int getActionId() {
          return actionId_;
        }

        public static final int QUANTITY_FIELD_NUMBER = 2;
        private int quantity_;
        /**
         * optional uint32 quantity = 2;
         */
        public boolean hasQuantity() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 quantity = 2;
         */
        public int getQuantity() {
          return quantity_;
        }

        public static final int AUDIT_FIELD_NUMBER = 3;
        private int audit_;
        /**
         * optional uint32 audit = 3;
         */
        public boolean hasAudit() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 audit = 3;
         */
        public int getAudit() {
          return audit_;
        }

        private void initFields() {
          actionId_ = 0;
          quantity_ = 0;
          audit_ = 0;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, actionId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, quantity_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, audit_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, actionId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, quantity_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, audit_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.ActionGrant}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.ActionGrant)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            actionId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            quantity_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            audit_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.actionId_ = actionId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.quantity_ = quantity_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.audit_ = audit_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.getDefaultInstance()) return this;
            if (other.hasActionId()) {
              setActionId(other.getActionId());
            }
            if (other.hasQuantity()) {
              setQuantity(other.getQuantity());
            }
            if (other.hasAudit()) {
              setAudit(other.getAudit());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int actionId_ ;
          /**
           * optional uint32 action_id = 1;
           */
          public boolean hasActionId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 action_id = 1;
           */
          public int getActionId() {
            return actionId_;
          }
          /**
           * optional uint32 action_id = 1;
           */
          public Builder setActionId(int value) {
            bitField0_ |= 0x00000001;
            actionId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 action_id = 1;
           */
          public Builder clearActionId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            actionId_ = 0;
            onChanged();
            return this;
          }

          private int quantity_ ;
          /**
           * optional uint32 quantity = 2;
           */
          public boolean hasQuantity() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 quantity = 2;
           */
          public int getQuantity() {
            return quantity_;
          }
          /**
           * optional uint32 quantity = 2;
           */
          public Builder setQuantity(int value) {
            bitField0_ |= 0x00000002;
            quantity_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 quantity = 2;
           */
          public Builder clearQuantity() {
            bitField0_ = (bitField0_ & ~0x00000002);
            quantity_ = 0;
            onChanged();
            return this;
          }

          private int audit_ ;
          /**
           * optional uint32 audit = 3;
           */
          public boolean hasAudit() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 audit = 3;
           */
          public int getAudit() {
            return audit_;
          }
          /**
           * optional uint32 audit = 3;
           */
          public Builder setAudit(int value) {
            bitField0_ |= 0x00000004;
            audit_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 audit = 3;
           */
          public Builder clearAudit() {
            bitField0_ = (bitField0_ & ~0x00000004);
            audit_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.ActionGrant)
        }

        static {
          defaultInstance = new ActionGrant(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.ActionGrant)
      }

      public interface EventDataOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.EventData)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 event_id = 1;
         */
        boolean hasEventId();
        /**
         * optional uint32 event_id = 1;
         */
        int getEventId();

        /**
         * optional uint32 event_points = 2;
         */
        boolean hasEventPoints();
        /**
         * optional uint32 event_points = 2;
         */
        int getEventPoints();

        /**
         * optional uint32 challenge_instance_id = 3;
         */
        boolean hasChallengeInstanceId();
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        int getChallengeInstanceId();

        /**
         * optional uint32 challenge_quest_id = 4;
         */
        boolean hasChallengeQuestId();
        /**
         * optional uint32 challenge_quest_id = 4;
         */
        int getChallengeQuestId();

        /**
         * optional uint32 challenge_quest_challenge_id = 5;
         */
        boolean hasChallengeQuestChallengeId();
        /**
         * optional uint32 challenge_quest_challenge_id = 5;
         */
        int getChallengeQuestChallengeId();

        /**
         * optional bool challenge_completed = 6;
         */
        boolean hasChallengeCompleted();
        /**
         * optional bool challenge_completed = 6;
         */
        boolean getChallengeCompleted();

        /**
         * optional uint32 challenge_rank_completed = 7;
         */
        boolean hasChallengeRankCompleted();
        /**
         * optional uint32 challenge_rank_completed = 7;
         */
        int getChallengeRankCompleted();

        /**
         * optional uint32 challenge_rank_previously_completed = 8;
         */
        boolean hasChallengeRankPreviouslyCompleted();
        /**
         * optional uint32 challenge_rank_previously_completed = 8;
         */
        int getChallengeRankPreviouslyCompleted();

        /**
         * optional bool event_owned = 9;
         */
        boolean hasEventOwned();
        /**
         * optional bool event_owned = 9;
         */
        boolean getEventOwned();

        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        java.util.List 
            getSubChallengesWithProgressList();
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge getSubChallengesWithProgress(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        int getSubChallengesWithProgressCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        java.util.List 
            getSubChallengesWithProgressOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder getSubChallengesWithProgressOrBuilder(
            int index);

        /**
         * optional uint32 wager_winnings = 11;
         */
        boolean hasWagerWinnings();
        /**
         * optional uint32 wager_winnings = 11;
         */
        int getWagerWinnings();

        /**
         * optional bool cavern_challenge_active = 12;
         */
        boolean hasCavernChallengeActive();
        /**
         * optional bool cavern_challenge_active = 12;
         */
        boolean getCavernChallengeActive();

        /**
         * optional uint32 cavern_challenge_winnings = 13;
         */
        boolean hasCavernChallengeWinnings();
        /**
         * optional uint32 cavern_challenge_winnings = 13;
         */
        int getCavernChallengeWinnings();

        /**
         * optional uint32 amount_wagered = 14;
         */
        boolean hasAmountWagered();
        /**
         * optional uint32 amount_wagered = 14;
         */
        int getAmountWagered();

        /**
         * optional uint32 team_wager_amount = 15;
         */
        boolean hasTeamWagerAmount();
        /**
         * optional uint32 team_wager_amount = 15;
         */
        int getTeamWagerAmount();

        /**
         * optional uint32 periodic_point_adjustments = 16;
         */
        boolean hasPeriodicPointAdjustments();
        /**
         * optional uint32 periodic_point_adjustments = 16;
         */
        int getPeriodicPointAdjustments();

        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        java.util.List 
            getCavernChallengeMapResultsList();
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult getCavernChallengeMapResults(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        int getCavernChallengeMapResultsCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        java.util.List 
            getCavernChallengeMapResultsOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder getCavernChallengeMapResultsOrBuilder(
            int index);

        /**
         * optional uint32 cavern_challenge_plus_shard_winnings = 18;
         */
        boolean hasCavernChallengePlusShardWinnings();
        /**
         * optional uint32 cavern_challenge_plus_shard_winnings = 18;
         */
        int getCavernChallengePlusShardWinnings();

        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        java.util.List 
            getActionsGrantedList();
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant getActionsGranted(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        int getActionsGrantedCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        java.util.List 
            getActionsGrantedOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder getActionsGrantedOrBuilder(
            int index);
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.EventData}
       */
      public static final class EventData extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.EventData)
          EventDataOrBuilder {
        // Use EventData.newBuilder() to construct.
        private EventData(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private EventData(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final EventData defaultInstance;
        public static EventData getDefaultInstance() {
          return defaultInstance;
        }

        public EventData getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private EventData(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  eventId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  eventPoints_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  challengeInstanceId_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  challengeQuestId_ = input.readUInt32();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000010;
                  challengeQuestChallengeId_ = input.readUInt32();
                  break;
                }
                case 48: {
                  bitField0_ |= 0x00000020;
                  challengeCompleted_ = input.readBool();
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000040;
                  challengeRankCompleted_ = input.readUInt32();
                  break;
                }
                case 64: {
                  bitField0_ |= 0x00000080;
                  challengeRankPreviouslyCompleted_ = input.readUInt32();
                  break;
                }
                case 72: {
                  bitField0_ |= 0x00000100;
                  eventOwned_ = input.readBool();
                  break;
                }
                case 82: {
                  if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                    subChallengesWithProgress_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000200;
                  }
                  subChallengesWithProgress_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.PARSER, extensionRegistry));
                  break;
                }
                case 88: {
                  bitField0_ |= 0x00000200;
                  wagerWinnings_ = input.readUInt32();
                  break;
                }
                case 96: {
                  bitField0_ |= 0x00000400;
                  cavernChallengeActive_ = input.readBool();
                  break;
                }
                case 104: {
                  bitField0_ |= 0x00000800;
                  cavernChallengeWinnings_ = input.readUInt32();
                  break;
                }
                case 112: {
                  bitField0_ |= 0x00001000;
                  amountWagered_ = input.readUInt32();
                  break;
                }
                case 120: {
                  bitField0_ |= 0x00002000;
                  teamWagerAmount_ = input.readUInt32();
                  break;
                }
                case 128: {
                  bitField0_ |= 0x00004000;
                  periodicPointAdjustments_ = input.readUInt32();
                  break;
                }
                case 138: {
                  if (!((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
                    cavernChallengeMapResults_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00010000;
                  }
                  cavernChallengeMapResults_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.PARSER, extensionRegistry));
                  break;
                }
                case 144: {
                  bitField0_ |= 0x00008000;
                  cavernChallengePlusShardWinnings_ = input.readUInt32();
                  break;
                }
                case 154: {
                  if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
                    actionsGranted_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00040000;
                  }
                  actionsGranted_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.PARSER, extensionRegistry));
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
              subChallengesWithProgress_ = java.util.Collections.unmodifiableList(subChallengesWithProgress_);
            }
            if (((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
              cavernChallengeMapResults_ = java.util.Collections.unmodifiableList(cavernChallengeMapResults_);
            }
            if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
              actionsGranted_ = java.util.Collections.unmodifiableList(actionsGranted_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int EVENT_ID_FIELD_NUMBER = 1;
        private int eventId_;
        /**
         * optional uint32 event_id = 1;
         */
        public boolean hasEventId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 event_id = 1;
         */
        public int getEventId() {
          return eventId_;
        }

        public static final int EVENT_POINTS_FIELD_NUMBER = 2;
        private int eventPoints_;
        /**
         * optional uint32 event_points = 2;
         */
        public boolean hasEventPoints() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 event_points = 2;
         */
        public int getEventPoints() {
          return eventPoints_;
        }

        public static final int CHALLENGE_INSTANCE_ID_FIELD_NUMBER = 3;
        private int challengeInstanceId_;
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        public boolean hasChallengeInstanceId() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        public int getChallengeInstanceId() {
          return challengeInstanceId_;
        }

        public static final int CHALLENGE_QUEST_ID_FIELD_NUMBER = 4;
        private int challengeQuestId_;
        /**
         * optional uint32 challenge_quest_id = 4;
         */
        public boolean hasChallengeQuestId() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 challenge_quest_id = 4;
         */
        public int getChallengeQuestId() {
          return challengeQuestId_;
        }

        public static final int CHALLENGE_QUEST_CHALLENGE_ID_FIELD_NUMBER = 5;
        private int challengeQuestChallengeId_;
        /**
         * optional uint32 challenge_quest_challenge_id = 5;
         */
        public boolean hasChallengeQuestChallengeId() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 challenge_quest_challenge_id = 5;
         */
        public int getChallengeQuestChallengeId() {
          return challengeQuestChallengeId_;
        }

        public static final int CHALLENGE_COMPLETED_FIELD_NUMBER = 6;
        private boolean challengeCompleted_;
        /**
         * optional bool challenge_completed = 6;
         */
        public boolean hasChallengeCompleted() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional bool challenge_completed = 6;
         */
        public boolean getChallengeCompleted() {
          return challengeCompleted_;
        }

        public static final int CHALLENGE_RANK_COMPLETED_FIELD_NUMBER = 7;
        private int challengeRankCompleted_;
        /**
         * optional uint32 challenge_rank_completed = 7;
         */
        public boolean hasChallengeRankCompleted() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint32 challenge_rank_completed = 7;
         */
        public int getChallengeRankCompleted() {
          return challengeRankCompleted_;
        }

        public static final int CHALLENGE_RANK_PREVIOUSLY_COMPLETED_FIELD_NUMBER = 8;
        private int challengeRankPreviouslyCompleted_;
        /**
         * optional uint32 challenge_rank_previously_completed = 8;
         */
        public boolean hasChallengeRankPreviouslyCompleted() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * optional uint32 challenge_rank_previously_completed = 8;
         */
        public int getChallengeRankPreviouslyCompleted() {
          return challengeRankPreviouslyCompleted_;
        }

        public static final int EVENT_OWNED_FIELD_NUMBER = 9;
        private boolean eventOwned_;
        /**
         * optional bool event_owned = 9;
         */
        public boolean hasEventOwned() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * optional bool event_owned = 9;
         */
        public boolean getEventOwned() {
          return eventOwned_;
        }

        public static final int SUB_CHALLENGES_WITH_PROGRESS_FIELD_NUMBER = 10;
        private java.util.List subChallengesWithProgress_;
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public java.util.List getSubChallengesWithProgressList() {
          return subChallengesWithProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public java.util.List 
            getSubChallengesWithProgressOrBuilderList() {
          return subChallengesWithProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public int getSubChallengesWithProgressCount() {
          return subChallengesWithProgress_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge getSubChallengesWithProgress(int index) {
          return subChallengesWithProgress_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder getSubChallengesWithProgressOrBuilder(
            int index) {
          return subChallengesWithProgress_.get(index);
        }

        public static final int WAGER_WINNINGS_FIELD_NUMBER = 11;
        private int wagerWinnings_;
        /**
         * optional uint32 wager_winnings = 11;
         */
        public boolean hasWagerWinnings() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional uint32 wager_winnings = 11;
         */
        public int getWagerWinnings() {
          return wagerWinnings_;
        }

        public static final int CAVERN_CHALLENGE_ACTIVE_FIELD_NUMBER = 12;
        private boolean cavernChallengeActive_;
        /**
         * optional bool cavern_challenge_active = 12;
         */
        public boolean hasCavernChallengeActive() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * optional bool cavern_challenge_active = 12;
         */
        public boolean getCavernChallengeActive() {
          return cavernChallengeActive_;
        }

        public static final int CAVERN_CHALLENGE_WINNINGS_FIELD_NUMBER = 13;
        private int cavernChallengeWinnings_;
        /**
         * optional uint32 cavern_challenge_winnings = 13;
         */
        public boolean hasCavernChallengeWinnings() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        /**
         * optional uint32 cavern_challenge_winnings = 13;
         */
        public int getCavernChallengeWinnings() {
          return cavernChallengeWinnings_;
        }

        public static final int AMOUNT_WAGERED_FIELD_NUMBER = 14;
        private int amountWagered_;
        /**
         * optional uint32 amount_wagered = 14;
         */
        public boolean hasAmountWagered() {
          return ((bitField0_ & 0x00001000) == 0x00001000);
        }
        /**
         * optional uint32 amount_wagered = 14;
         */
        public int getAmountWagered() {
          return amountWagered_;
        }

        public static final int TEAM_WAGER_AMOUNT_FIELD_NUMBER = 15;
        private int teamWagerAmount_;
        /**
         * optional uint32 team_wager_amount = 15;
         */
        public boolean hasTeamWagerAmount() {
          return ((bitField0_ & 0x00002000) == 0x00002000);
        }
        /**
         * optional uint32 team_wager_amount = 15;
         */
        public int getTeamWagerAmount() {
          return teamWagerAmount_;
        }

        public static final int PERIODIC_POINT_ADJUSTMENTS_FIELD_NUMBER = 16;
        private int periodicPointAdjustments_;
        /**
         * optional uint32 periodic_point_adjustments = 16;
         */
        public boolean hasPeriodicPointAdjustments() {
          return ((bitField0_ & 0x00004000) == 0x00004000);
        }
        /**
         * optional uint32 periodic_point_adjustments = 16;
         */
        public int getPeriodicPointAdjustments() {
          return periodicPointAdjustments_;
        }

        public static final int CAVERN_CHALLENGE_MAP_RESULTS_FIELD_NUMBER = 17;
        private java.util.List cavernChallengeMapResults_;
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public java.util.List getCavernChallengeMapResultsList() {
          return cavernChallengeMapResults_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public java.util.List 
            getCavernChallengeMapResultsOrBuilderList() {
          return cavernChallengeMapResults_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public int getCavernChallengeMapResultsCount() {
          return cavernChallengeMapResults_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult getCavernChallengeMapResults(int index) {
          return cavernChallengeMapResults_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder getCavernChallengeMapResultsOrBuilder(
            int index) {
          return cavernChallengeMapResults_.get(index);
        }

        public static final int CAVERN_CHALLENGE_PLUS_SHARD_WINNINGS_FIELD_NUMBER = 18;
        private int cavernChallengePlusShardWinnings_;
        /**
         * optional uint32 cavern_challenge_plus_shard_winnings = 18;
         */
        public boolean hasCavernChallengePlusShardWinnings() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        /**
         * optional uint32 cavern_challenge_plus_shard_winnings = 18;
         */
        public int getCavernChallengePlusShardWinnings() {
          return cavernChallengePlusShardWinnings_;
        }

        public static final int ACTIONS_GRANTED_FIELD_NUMBER = 19;
        private java.util.List actionsGranted_;
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public java.util.List getActionsGrantedList() {
          return actionsGranted_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public java.util.List 
            getActionsGrantedOrBuilderList() {
          return actionsGranted_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public int getActionsGrantedCount() {
          return actionsGranted_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant getActionsGranted(int index) {
          return actionsGranted_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder getActionsGrantedOrBuilder(
            int index) {
          return actionsGranted_.get(index);
        }

        private void initFields() {
          eventId_ = 0;
          eventPoints_ = 0;
          challengeInstanceId_ = 0;
          challengeQuestId_ = 0;
          challengeQuestChallengeId_ = 0;
          challengeCompleted_ = false;
          challengeRankCompleted_ = 0;
          challengeRankPreviouslyCompleted_ = 0;
          eventOwned_ = false;
          subChallengesWithProgress_ = java.util.Collections.emptyList();
          wagerWinnings_ = 0;
          cavernChallengeActive_ = false;
          cavernChallengeWinnings_ = 0;
          amountWagered_ = 0;
          teamWagerAmount_ = 0;
          periodicPointAdjustments_ = 0;
          cavernChallengeMapResults_ = java.util.Collections.emptyList();
          cavernChallengePlusShardWinnings_ = 0;
          actionsGranted_ = java.util.Collections.emptyList();
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, eventId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, eventPoints_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, challengeInstanceId_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(4, challengeQuestId_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeUInt32(5, challengeQuestChallengeId_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeBool(6, challengeCompleted_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeUInt32(7, challengeRankCompleted_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            output.writeUInt32(8, challengeRankPreviouslyCompleted_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            output.writeBool(9, eventOwned_);
          }
          for (int i = 0; i < subChallengesWithProgress_.size(); i++) {
            output.writeMessage(10, subChallengesWithProgress_.get(i));
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            output.writeUInt32(11, wagerWinnings_);
          }
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            output.writeBool(12, cavernChallengeActive_);
          }
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            output.writeUInt32(13, cavernChallengeWinnings_);
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            output.writeUInt32(14, amountWagered_);
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            output.writeUInt32(15, teamWagerAmount_);
          }
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            output.writeUInt32(16, periodicPointAdjustments_);
          }
          for (int i = 0; i < cavernChallengeMapResults_.size(); i++) {
            output.writeMessage(17, cavernChallengeMapResults_.get(i));
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            output.writeUInt32(18, cavernChallengePlusShardWinnings_);
          }
          for (int i = 0; i < actionsGranted_.size(); i++) {
            output.writeMessage(19, actionsGranted_.get(i));
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, eventId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, eventPoints_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, challengeInstanceId_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, challengeQuestId_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(5, challengeQuestChallengeId_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(6, challengeCompleted_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(7, challengeRankCompleted_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(8, challengeRankPreviouslyCompleted_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(9, eventOwned_);
          }
          for (int i = 0; i < subChallengesWithProgress_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(10, subChallengesWithProgress_.get(i));
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(11, wagerWinnings_);
          }
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(12, cavernChallengeActive_);
          }
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(13, cavernChallengeWinnings_);
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(14, amountWagered_);
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(15, teamWagerAmount_);
          }
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(16, periodicPointAdjustments_);
          }
          for (int i = 0; i < cavernChallengeMapResults_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(17, cavernChallengeMapResults_.get(i));
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(18, cavernChallengePlusShardWinnings_);
          }
          for (int i = 0; i < actionsGranted_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(19, actionsGranted_.get(i));
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.EventData}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.EventData)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getSubChallengesWithProgressFieldBuilder();
              getCavernChallengeMapResultsFieldBuilder();
              getActionsGrantedFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            eventId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            eventPoints_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            challengeInstanceId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            challengeQuestId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000008);
            challengeQuestChallengeId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000010);
            challengeCompleted_ = false;
            bitField0_ = (bitField0_ & ~0x00000020);
            challengeRankCompleted_ = 0;
            bitField0_ = (bitField0_ & ~0x00000040);
            challengeRankPreviouslyCompleted_ = 0;
            bitField0_ = (bitField0_ & ~0x00000080);
            eventOwned_ = false;
            bitField0_ = (bitField0_ & ~0x00000100);
            if (subChallengesWithProgressBuilder_ == null) {
              subChallengesWithProgress_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              subChallengesWithProgressBuilder_.clear();
            }
            wagerWinnings_ = 0;
            bitField0_ = (bitField0_ & ~0x00000400);
            cavernChallengeActive_ = false;
            bitField0_ = (bitField0_ & ~0x00000800);
            cavernChallengeWinnings_ = 0;
            bitField0_ = (bitField0_ & ~0x00001000);
            amountWagered_ = 0;
            bitField0_ = (bitField0_ & ~0x00002000);
            teamWagerAmount_ = 0;
            bitField0_ = (bitField0_ & ~0x00004000);
            periodicPointAdjustments_ = 0;
            bitField0_ = (bitField0_ & ~0x00008000);
            if (cavernChallengeMapResultsBuilder_ == null) {
              cavernChallengeMapResults_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00010000);
            } else {
              cavernChallengeMapResultsBuilder_.clear();
            }
            cavernChallengePlusShardWinnings_ = 0;
            bitField0_ = (bitField0_ & ~0x00020000);
            if (actionsGrantedBuilder_ == null) {
              actionsGranted_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00040000);
            } else {
              actionsGrantedBuilder_.clear();
            }
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.eventId_ = eventId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.eventPoints_ = eventPoints_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.challengeInstanceId_ = challengeInstanceId_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.challengeQuestId_ = challengeQuestId_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000010;
            }
            result.challengeQuestChallengeId_ = challengeQuestChallengeId_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000020;
            }
            result.challengeCompleted_ = challengeCompleted_;
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000040;
            }
            result.challengeRankCompleted_ = challengeRankCompleted_;
            if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
              to_bitField0_ |= 0x00000080;
            }
            result.challengeRankPreviouslyCompleted_ = challengeRankPreviouslyCompleted_;
            if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
              to_bitField0_ |= 0x00000100;
            }
            result.eventOwned_ = eventOwned_;
            if (subChallengesWithProgressBuilder_ == null) {
              if (((bitField0_ & 0x00000200) == 0x00000200)) {
                subChallengesWithProgress_ = java.util.Collections.unmodifiableList(subChallengesWithProgress_);
                bitField0_ = (bitField0_ & ~0x00000200);
              }
              result.subChallengesWithProgress_ = subChallengesWithProgress_;
            } else {
              result.subChallengesWithProgress_ = subChallengesWithProgressBuilder_.build();
            }
            if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
              to_bitField0_ |= 0x00000200;
            }
            result.wagerWinnings_ = wagerWinnings_;
            if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
              to_bitField0_ |= 0x00000400;
            }
            result.cavernChallengeActive_ = cavernChallengeActive_;
            if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
              to_bitField0_ |= 0x00000800;
            }
            result.cavernChallengeWinnings_ = cavernChallengeWinnings_;
            if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
              to_bitField0_ |= 0x00001000;
            }
            result.amountWagered_ = amountWagered_;
            if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
              to_bitField0_ |= 0x00002000;
            }
            result.teamWagerAmount_ = teamWagerAmount_;
            if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
              to_bitField0_ |= 0x00004000;
            }
            result.periodicPointAdjustments_ = periodicPointAdjustments_;
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (((bitField0_ & 0x00010000) == 0x00010000)) {
                cavernChallengeMapResults_ = java.util.Collections.unmodifiableList(cavernChallengeMapResults_);
                bitField0_ = (bitField0_ & ~0x00010000);
              }
              result.cavernChallengeMapResults_ = cavernChallengeMapResults_;
            } else {
              result.cavernChallengeMapResults_ = cavernChallengeMapResultsBuilder_.build();
            }
            if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
              to_bitField0_ |= 0x00008000;
            }
            result.cavernChallengePlusShardWinnings_ = cavernChallengePlusShardWinnings_;
            if (actionsGrantedBuilder_ == null) {
              if (((bitField0_ & 0x00040000) == 0x00040000)) {
                actionsGranted_ = java.util.Collections.unmodifiableList(actionsGranted_);
                bitField0_ = (bitField0_ & ~0x00040000);
              }
              result.actionsGranted_ = actionsGranted_;
            } else {
              result.actionsGranted_ = actionsGrantedBuilder_.build();
            }
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.getDefaultInstance()) return this;
            if (other.hasEventId()) {
              setEventId(other.getEventId());
            }
            if (other.hasEventPoints()) {
              setEventPoints(other.getEventPoints());
            }
            if (other.hasChallengeInstanceId()) {
              setChallengeInstanceId(other.getChallengeInstanceId());
            }
            if (other.hasChallengeQuestId()) {
              setChallengeQuestId(other.getChallengeQuestId());
            }
            if (other.hasChallengeQuestChallengeId()) {
              setChallengeQuestChallengeId(other.getChallengeQuestChallengeId());
            }
            if (other.hasChallengeCompleted()) {
              setChallengeCompleted(other.getChallengeCompleted());
            }
            if (other.hasChallengeRankCompleted()) {
              setChallengeRankCompleted(other.getChallengeRankCompleted());
            }
            if (other.hasChallengeRankPreviouslyCompleted()) {
              setChallengeRankPreviouslyCompleted(other.getChallengeRankPreviouslyCompleted());
            }
            if (other.hasEventOwned()) {
              setEventOwned(other.getEventOwned());
            }
            if (subChallengesWithProgressBuilder_ == null) {
              if (!other.subChallengesWithProgress_.isEmpty()) {
                if (subChallengesWithProgress_.isEmpty()) {
                  subChallengesWithProgress_ = other.subChallengesWithProgress_;
                  bitField0_ = (bitField0_ & ~0x00000200);
                } else {
                  ensureSubChallengesWithProgressIsMutable();
                  subChallengesWithProgress_.addAll(other.subChallengesWithProgress_);
                }
                onChanged();
              }
            } else {
              if (!other.subChallengesWithProgress_.isEmpty()) {
                if (subChallengesWithProgressBuilder_.isEmpty()) {
                  subChallengesWithProgressBuilder_.dispose();
                  subChallengesWithProgressBuilder_ = null;
                  subChallengesWithProgress_ = other.subChallengesWithProgress_;
                  bitField0_ = (bitField0_ & ~0x00000200);
                  subChallengesWithProgressBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getSubChallengesWithProgressFieldBuilder() : null;
                } else {
                  subChallengesWithProgressBuilder_.addAllMessages(other.subChallengesWithProgress_);
                }
              }
            }
            if (other.hasWagerWinnings()) {
              setWagerWinnings(other.getWagerWinnings());
            }
            if (other.hasCavernChallengeActive()) {
              setCavernChallengeActive(other.getCavernChallengeActive());
            }
            if (other.hasCavernChallengeWinnings()) {
              setCavernChallengeWinnings(other.getCavernChallengeWinnings());
            }
            if (other.hasAmountWagered()) {
              setAmountWagered(other.getAmountWagered());
            }
            if (other.hasTeamWagerAmount()) {
              setTeamWagerAmount(other.getTeamWagerAmount());
            }
            if (other.hasPeriodicPointAdjustments()) {
              setPeriodicPointAdjustments(other.getPeriodicPointAdjustments());
            }
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (!other.cavernChallengeMapResults_.isEmpty()) {
                if (cavernChallengeMapResults_.isEmpty()) {
                  cavernChallengeMapResults_ = other.cavernChallengeMapResults_;
                  bitField0_ = (bitField0_ & ~0x00010000);
                } else {
                  ensureCavernChallengeMapResultsIsMutable();
                  cavernChallengeMapResults_.addAll(other.cavernChallengeMapResults_);
                }
                onChanged();
              }
            } else {
              if (!other.cavernChallengeMapResults_.isEmpty()) {
                if (cavernChallengeMapResultsBuilder_.isEmpty()) {
                  cavernChallengeMapResultsBuilder_.dispose();
                  cavernChallengeMapResultsBuilder_ = null;
                  cavernChallengeMapResults_ = other.cavernChallengeMapResults_;
                  bitField0_ = (bitField0_ & ~0x00010000);
                  cavernChallengeMapResultsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getCavernChallengeMapResultsFieldBuilder() : null;
                } else {
                  cavernChallengeMapResultsBuilder_.addAllMessages(other.cavernChallengeMapResults_);
                }
              }
            }
            if (other.hasCavernChallengePlusShardWinnings()) {
              setCavernChallengePlusShardWinnings(other.getCavernChallengePlusShardWinnings());
            }
            if (actionsGrantedBuilder_ == null) {
              if (!other.actionsGranted_.isEmpty()) {
                if (actionsGranted_.isEmpty()) {
                  actionsGranted_ = other.actionsGranted_;
                  bitField0_ = (bitField0_ & ~0x00040000);
                } else {
                  ensureActionsGrantedIsMutable();
                  actionsGranted_.addAll(other.actionsGranted_);
                }
                onChanged();
              }
            } else {
              if (!other.actionsGranted_.isEmpty()) {
                if (actionsGrantedBuilder_.isEmpty()) {
                  actionsGrantedBuilder_.dispose();
                  actionsGrantedBuilder_ = null;
                  actionsGranted_ = other.actionsGranted_;
                  bitField0_ = (bitField0_ & ~0x00040000);
                  actionsGrantedBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getActionsGrantedFieldBuilder() : null;
                } else {
                  actionsGrantedBuilder_.addAllMessages(other.actionsGranted_);
                }
              }
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int eventId_ ;
          /**
           * optional uint32 event_id = 1;
           */
          public boolean hasEventId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 event_id = 1;
           */
          public int getEventId() {
            return eventId_;
          }
          /**
           * optional uint32 event_id = 1;
           */
          public Builder setEventId(int value) {
            bitField0_ |= 0x00000001;
            eventId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 event_id = 1;
           */
          public Builder clearEventId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            eventId_ = 0;
            onChanged();
            return this;
          }

          private int eventPoints_ ;
          /**
           * optional uint32 event_points = 2;
           */
          public boolean hasEventPoints() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 event_points = 2;
           */
          public int getEventPoints() {
            return eventPoints_;
          }
          /**
           * optional uint32 event_points = 2;
           */
          public Builder setEventPoints(int value) {
            bitField0_ |= 0x00000002;
            eventPoints_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 event_points = 2;
           */
          public Builder clearEventPoints() {
            bitField0_ = (bitField0_ & ~0x00000002);
            eventPoints_ = 0;
            onChanged();
            return this;
          }

          private int challengeInstanceId_ ;
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public boolean hasChallengeInstanceId() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public int getChallengeInstanceId() {
            return challengeInstanceId_;
          }
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public Builder setChallengeInstanceId(int value) {
            bitField0_ |= 0x00000004;
            challengeInstanceId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public Builder clearChallengeInstanceId() {
            bitField0_ = (bitField0_ & ~0x00000004);
            challengeInstanceId_ = 0;
            onChanged();
            return this;
          }

          private int challengeQuestId_ ;
          /**
           * optional uint32 challenge_quest_id = 4;
           */
          public boolean hasChallengeQuestId() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 challenge_quest_id = 4;
           */
          public int getChallengeQuestId() {
            return challengeQuestId_;
          }
          /**
           * optional uint32 challenge_quest_id = 4;
           */
          public Builder setChallengeQuestId(int value) {
            bitField0_ |= 0x00000008;
            challengeQuestId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_quest_id = 4;
           */
          public Builder clearChallengeQuestId() {
            bitField0_ = (bitField0_ & ~0x00000008);
            challengeQuestId_ = 0;
            onChanged();
            return this;
          }

          private int challengeQuestChallengeId_ ;
          /**
           * optional uint32 challenge_quest_challenge_id = 5;
           */
          public boolean hasChallengeQuestChallengeId() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 challenge_quest_challenge_id = 5;
           */
          public int getChallengeQuestChallengeId() {
            return challengeQuestChallengeId_;
          }
          /**
           * optional uint32 challenge_quest_challenge_id = 5;
           */
          public Builder setChallengeQuestChallengeId(int value) {
            bitField0_ |= 0x00000010;
            challengeQuestChallengeId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_quest_challenge_id = 5;
           */
          public Builder clearChallengeQuestChallengeId() {
            bitField0_ = (bitField0_ & ~0x00000010);
            challengeQuestChallengeId_ = 0;
            onChanged();
            return this;
          }

          private boolean challengeCompleted_ ;
          /**
           * optional bool challenge_completed = 6;
           */
          public boolean hasChallengeCompleted() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional bool challenge_completed = 6;
           */
          public boolean getChallengeCompleted() {
            return challengeCompleted_;
          }
          /**
           * optional bool challenge_completed = 6;
           */
          public Builder setChallengeCompleted(boolean value) {
            bitField0_ |= 0x00000020;
            challengeCompleted_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool challenge_completed = 6;
           */
          public Builder clearChallengeCompleted() {
            bitField0_ = (bitField0_ & ~0x00000020);
            challengeCompleted_ = false;
            onChanged();
            return this;
          }

          private int challengeRankCompleted_ ;
          /**
           * optional uint32 challenge_rank_completed = 7;
           */
          public boolean hasChallengeRankCompleted() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint32 challenge_rank_completed = 7;
           */
          public int getChallengeRankCompleted() {
            return challengeRankCompleted_;
          }
          /**
           * optional uint32 challenge_rank_completed = 7;
           */
          public Builder setChallengeRankCompleted(int value) {
            bitField0_ |= 0x00000040;
            challengeRankCompleted_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_rank_completed = 7;
           */
          public Builder clearChallengeRankCompleted() {
            bitField0_ = (bitField0_ & ~0x00000040);
            challengeRankCompleted_ = 0;
            onChanged();
            return this;
          }

          private int challengeRankPreviouslyCompleted_ ;
          /**
           * optional uint32 challenge_rank_previously_completed = 8;
           */
          public boolean hasChallengeRankPreviouslyCompleted() {
            return ((bitField0_ & 0x00000080) == 0x00000080);
          }
          /**
           * optional uint32 challenge_rank_previously_completed = 8;
           */
          public int getChallengeRankPreviouslyCompleted() {
            return challengeRankPreviouslyCompleted_;
          }
          /**
           * optional uint32 challenge_rank_previously_completed = 8;
           */
          public Builder setChallengeRankPreviouslyCompleted(int value) {
            bitField0_ |= 0x00000080;
            challengeRankPreviouslyCompleted_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_rank_previously_completed = 8;
           */
          public Builder clearChallengeRankPreviouslyCompleted() {
            bitField0_ = (bitField0_ & ~0x00000080);
            challengeRankPreviouslyCompleted_ = 0;
            onChanged();
            return this;
          }

          private boolean eventOwned_ ;
          /**
           * optional bool event_owned = 9;
           */
          public boolean hasEventOwned() {
            return ((bitField0_ & 0x00000100) == 0x00000100);
          }
          /**
           * optional bool event_owned = 9;
           */
          public boolean getEventOwned() {
            return eventOwned_;
          }
          /**
           * optional bool event_owned = 9;
           */
          public Builder setEventOwned(boolean value) {
            bitField0_ |= 0x00000100;
            eventOwned_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool event_owned = 9;
           */
          public Builder clearEventOwned() {
            bitField0_ = (bitField0_ & ~0x00000100);
            eventOwned_ = false;
            onChanged();
            return this;
          }

          private java.util.List subChallengesWithProgress_ =
            java.util.Collections.emptyList();
          private void ensureSubChallengesWithProgressIsMutable() {
            if (!((bitField0_ & 0x00000200) == 0x00000200)) {
              subChallengesWithProgress_ = new java.util.ArrayList(subChallengesWithProgress_);
              bitField0_ |= 0x00000200;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder> subChallengesWithProgressBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public java.util.List getSubChallengesWithProgressList() {
            if (subChallengesWithProgressBuilder_ == null) {
              return java.util.Collections.unmodifiableList(subChallengesWithProgress_);
            } else {
              return subChallengesWithProgressBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public int getSubChallengesWithProgressCount() {
            if (subChallengesWithProgressBuilder_ == null) {
              return subChallengesWithProgress_.size();
            } else {
              return subChallengesWithProgressBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge getSubChallengesWithProgress(int index) {
            if (subChallengesWithProgressBuilder_ == null) {
              return subChallengesWithProgress_.get(index);
            } else {
              return subChallengesWithProgressBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder setSubChallengesWithProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge value) {
            if (subChallengesWithProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.set(index, value);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder setSubChallengesWithProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder builderForValue) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.set(index, builderForValue.build());
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addSubChallengesWithProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge value) {
            if (subChallengesWithProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.add(value);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addSubChallengesWithProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge value) {
            if (subChallengesWithProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.add(index, value);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addSubChallengesWithProgress(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder builderForValue) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.add(builderForValue.build());
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addSubChallengesWithProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder builderForValue) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.add(index, builderForValue.build());
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addAllSubChallengesWithProgress(
              java.lang.Iterable values) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, subChallengesWithProgress_);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder clearSubChallengesWithProgress() {
            if (subChallengesWithProgressBuilder_ == null) {
              subChallengesWithProgress_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000200);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder removeSubChallengesWithProgress(int index) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.remove(index);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder getSubChallengesWithProgressBuilder(
              int index) {
            return getSubChallengesWithProgressFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder getSubChallengesWithProgressOrBuilder(
              int index) {
            if (subChallengesWithProgressBuilder_ == null) {
              return subChallengesWithProgress_.get(index);  } else {
              return subChallengesWithProgressBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public java.util.List 
               getSubChallengesWithProgressOrBuilderList() {
            if (subChallengesWithProgressBuilder_ != null) {
              return subChallengesWithProgressBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(subChallengesWithProgress_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder addSubChallengesWithProgressBuilder() {
            return getSubChallengesWithProgressFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder addSubChallengesWithProgressBuilder(
              int index) {
            return getSubChallengesWithProgressFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public java.util.List 
               getSubChallengesWithProgressBuilderList() {
            return getSubChallengesWithProgressFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder> 
              getSubChallengesWithProgressFieldBuilder() {
            if (subChallengesWithProgressBuilder_ == null) {
              subChallengesWithProgressBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder>(
                      subChallengesWithProgress_,
                      ((bitField0_ & 0x00000200) == 0x00000200),
                      getParentForChildren(),
                      isClean());
              subChallengesWithProgress_ = null;
            }
            return subChallengesWithProgressBuilder_;
          }

          private int wagerWinnings_ ;
          /**
           * optional uint32 wager_winnings = 11;
           */
          public boolean hasWagerWinnings() {
            return ((bitField0_ & 0x00000400) == 0x00000400);
          }
          /**
           * optional uint32 wager_winnings = 11;
           */
          public int getWagerWinnings() {
            return wagerWinnings_;
          }
          /**
           * optional uint32 wager_winnings = 11;
           */
          public Builder setWagerWinnings(int value) {
            bitField0_ |= 0x00000400;
            wagerWinnings_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 wager_winnings = 11;
           */
          public Builder clearWagerWinnings() {
            bitField0_ = (bitField0_ & ~0x00000400);
            wagerWinnings_ = 0;
            onChanged();
            return this;
          }

          private boolean cavernChallengeActive_ ;
          /**
           * optional bool cavern_challenge_active = 12;
           */
          public boolean hasCavernChallengeActive() {
            return ((bitField0_ & 0x00000800) == 0x00000800);
          }
          /**
           * optional bool cavern_challenge_active = 12;
           */
          public boolean getCavernChallengeActive() {
            return cavernChallengeActive_;
          }
          /**
           * optional bool cavern_challenge_active = 12;
           */
          public Builder setCavernChallengeActive(boolean value) {
            bitField0_ |= 0x00000800;
            cavernChallengeActive_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool cavern_challenge_active = 12;
           */
          public Builder clearCavernChallengeActive() {
            bitField0_ = (bitField0_ & ~0x00000800);
            cavernChallengeActive_ = false;
            onChanged();
            return this;
          }

          private int cavernChallengeWinnings_ ;
          /**
           * optional uint32 cavern_challenge_winnings = 13;
           */
          public boolean hasCavernChallengeWinnings() {
            return ((bitField0_ & 0x00001000) == 0x00001000);
          }
          /**
           * optional uint32 cavern_challenge_winnings = 13;
           */
          public int getCavernChallengeWinnings() {
            return cavernChallengeWinnings_;
          }
          /**
           * optional uint32 cavern_challenge_winnings = 13;
           */
          public Builder setCavernChallengeWinnings(int value) {
            bitField0_ |= 0x00001000;
            cavernChallengeWinnings_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 cavern_challenge_winnings = 13;
           */
          public Builder clearCavernChallengeWinnings() {
            bitField0_ = (bitField0_ & ~0x00001000);
            cavernChallengeWinnings_ = 0;
            onChanged();
            return this;
          }

          private int amountWagered_ ;
          /**
           * optional uint32 amount_wagered = 14;
           */
          public boolean hasAmountWagered() {
            return ((bitField0_ & 0x00002000) == 0x00002000);
          }
          /**
           * optional uint32 amount_wagered = 14;
           */
          public int getAmountWagered() {
            return amountWagered_;
          }
          /**
           * optional uint32 amount_wagered = 14;
           */
          public Builder setAmountWagered(int value) {
            bitField0_ |= 0x00002000;
            amountWagered_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 amount_wagered = 14;
           */
          public Builder clearAmountWagered() {
            bitField0_ = (bitField0_ & ~0x00002000);
            amountWagered_ = 0;
            onChanged();
            return this;
          }

          private int teamWagerAmount_ ;
          /**
           * optional uint32 team_wager_amount = 15;
           */
          public boolean hasTeamWagerAmount() {
            return ((bitField0_ & 0x00004000) == 0x00004000);
          }
          /**
           * optional uint32 team_wager_amount = 15;
           */
          public int getTeamWagerAmount() {
            return teamWagerAmount_;
          }
          /**
           * optional uint32 team_wager_amount = 15;
           */
          public Builder setTeamWagerAmount(int value) {
            bitField0_ |= 0x00004000;
            teamWagerAmount_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 team_wager_amount = 15;
           */
          public Builder clearTeamWagerAmount() {
            bitField0_ = (bitField0_ & ~0x00004000);
            teamWagerAmount_ = 0;
            onChanged();
            return this;
          }

          private int periodicPointAdjustments_ ;
          /**
           * optional uint32 periodic_point_adjustments = 16;
           */
          public boolean hasPeriodicPointAdjustments() {
            return ((bitField0_ & 0x00008000) == 0x00008000);
          }
          /**
           * optional uint32 periodic_point_adjustments = 16;
           */
          public int getPeriodicPointAdjustments() {
            return periodicPointAdjustments_;
          }
          /**
           * optional uint32 periodic_point_adjustments = 16;
           */
          public Builder setPeriodicPointAdjustments(int value) {
            bitField0_ |= 0x00008000;
            periodicPointAdjustments_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 periodic_point_adjustments = 16;
           */
          public Builder clearPeriodicPointAdjustments() {
            bitField0_ = (bitField0_ & ~0x00008000);
            periodicPointAdjustments_ = 0;
            onChanged();
            return this;
          }

          private java.util.List cavernChallengeMapResults_ =
            java.util.Collections.emptyList();
          private void ensureCavernChallengeMapResultsIsMutable() {
            if (!((bitField0_ & 0x00010000) == 0x00010000)) {
              cavernChallengeMapResults_ = new java.util.ArrayList(cavernChallengeMapResults_);
              bitField0_ |= 0x00010000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder> cavernChallengeMapResultsBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public java.util.List getCavernChallengeMapResultsList() {
            if (cavernChallengeMapResultsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(cavernChallengeMapResults_);
            } else {
              return cavernChallengeMapResultsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public int getCavernChallengeMapResultsCount() {
            if (cavernChallengeMapResultsBuilder_ == null) {
              return cavernChallengeMapResults_.size();
            } else {
              return cavernChallengeMapResultsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult getCavernChallengeMapResults(int index) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              return cavernChallengeMapResults_.get(index);
            } else {
              return cavernChallengeMapResultsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder setCavernChallengeMapResults(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult value) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.set(index, value);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder setCavernChallengeMapResults(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder builderForValue) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.set(index, builderForValue.build());
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addCavernChallengeMapResults(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult value) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.add(value);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addCavernChallengeMapResults(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult value) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.add(index, value);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addCavernChallengeMapResults(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder builderForValue) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.add(builderForValue.build());
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addCavernChallengeMapResults(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder builderForValue) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.add(index, builderForValue.build());
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addAllCavernChallengeMapResults(
              java.lang.Iterable values) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, cavernChallengeMapResults_);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder clearCavernChallengeMapResults() {
            if (cavernChallengeMapResultsBuilder_ == null) {
              cavernChallengeMapResults_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00010000);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder removeCavernChallengeMapResults(int index) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.remove(index);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder getCavernChallengeMapResultsBuilder(
              int index) {
            return getCavernChallengeMapResultsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder getCavernChallengeMapResultsOrBuilder(
              int index) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              return cavernChallengeMapResults_.get(index);  } else {
              return cavernChallengeMapResultsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public java.util.List 
               getCavernChallengeMapResultsOrBuilderList() {
            if (cavernChallengeMapResultsBuilder_ != null) {
              return cavernChallengeMapResultsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(cavernChallengeMapResults_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder addCavernChallengeMapResultsBuilder() {
            return getCavernChallengeMapResultsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder addCavernChallengeMapResultsBuilder(
              int index) {
            return getCavernChallengeMapResultsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public java.util.List 
               getCavernChallengeMapResultsBuilderList() {
            return getCavernChallengeMapResultsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder> 
              getCavernChallengeMapResultsFieldBuilder() {
            if (cavernChallengeMapResultsBuilder_ == null) {
              cavernChallengeMapResultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder>(
                      cavernChallengeMapResults_,
                      ((bitField0_ & 0x00010000) == 0x00010000),
                      getParentForChildren(),
                      isClean());
              cavernChallengeMapResults_ = null;
            }
            return cavernChallengeMapResultsBuilder_;
          }

          private int cavernChallengePlusShardWinnings_ ;
          /**
           * optional uint32 cavern_challenge_plus_shard_winnings = 18;
           */
          public boolean hasCavernChallengePlusShardWinnings() {
            return ((bitField0_ & 0x00020000) == 0x00020000);
          }
          /**
           * optional uint32 cavern_challenge_plus_shard_winnings = 18;
           */
          public int getCavernChallengePlusShardWinnings() {
            return cavernChallengePlusShardWinnings_;
          }
          /**
           * optional uint32 cavern_challenge_plus_shard_winnings = 18;
           */
          public Builder setCavernChallengePlusShardWinnings(int value) {
            bitField0_ |= 0x00020000;
            cavernChallengePlusShardWinnings_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 cavern_challenge_plus_shard_winnings = 18;
           */
          public Builder clearCavernChallengePlusShardWinnings() {
            bitField0_ = (bitField0_ & ~0x00020000);
            cavernChallengePlusShardWinnings_ = 0;
            onChanged();
            return this;
          }

          private java.util.List actionsGranted_ =
            java.util.Collections.emptyList();
          private void ensureActionsGrantedIsMutable() {
            if (!((bitField0_ & 0x00040000) == 0x00040000)) {
              actionsGranted_ = new java.util.ArrayList(actionsGranted_);
              bitField0_ |= 0x00040000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder> actionsGrantedBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public java.util.List getActionsGrantedList() {
            if (actionsGrantedBuilder_ == null) {
              return java.util.Collections.unmodifiableList(actionsGranted_);
            } else {
              return actionsGrantedBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public int getActionsGrantedCount() {
            if (actionsGrantedBuilder_ == null) {
              return actionsGranted_.size();
            } else {
              return actionsGrantedBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant getActionsGranted(int index) {
            if (actionsGrantedBuilder_ == null) {
              return actionsGranted_.get(index);
            } else {
              return actionsGrantedBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder setActionsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant value) {
            if (actionsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureActionsGrantedIsMutable();
              actionsGranted_.set(index, value);
              onChanged();
            } else {
              actionsGrantedBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder setActionsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder builderForValue) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              actionsGranted_.set(index, builderForValue.build());
              onChanged();
            } else {
              actionsGrantedBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addActionsGranted(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant value) {
            if (actionsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureActionsGrantedIsMutable();
              actionsGranted_.add(value);
              onChanged();
            } else {
              actionsGrantedBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addActionsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant value) {
            if (actionsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureActionsGrantedIsMutable();
              actionsGranted_.add(index, value);
              onChanged();
            } else {
              actionsGrantedBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addActionsGranted(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder builderForValue) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              actionsGranted_.add(builderForValue.build());
              onChanged();
            } else {
              actionsGrantedBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addActionsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder builderForValue) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              actionsGranted_.add(index, builderForValue.build());
              onChanged();
            } else {
              actionsGrantedBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addAllActionsGranted(
              java.lang.Iterable values) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, actionsGranted_);
              onChanged();
            } else {
              actionsGrantedBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder clearActionsGranted() {
            if (actionsGrantedBuilder_ == null) {
              actionsGranted_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00040000);
              onChanged();
            } else {
              actionsGrantedBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder removeActionsGranted(int index) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              actionsGranted_.remove(index);
              onChanged();
            } else {
              actionsGrantedBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder getActionsGrantedBuilder(
              int index) {
            return getActionsGrantedFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder getActionsGrantedOrBuilder(
              int index) {
            if (actionsGrantedBuilder_ == null) {
              return actionsGranted_.get(index);  } else {
              return actionsGrantedBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public java.util.List 
               getActionsGrantedOrBuilderList() {
            if (actionsGrantedBuilder_ != null) {
              return actionsGrantedBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(actionsGranted_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder addActionsGrantedBuilder() {
            return getActionsGrantedFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder addActionsGrantedBuilder(
              int index) {
            return getActionsGrantedFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public java.util.List 
               getActionsGrantedBuilderList() {
            return getActionsGrantedFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder> 
              getActionsGrantedFieldBuilder() {
            if (actionsGrantedBuilder_ == null) {
              actionsGrantedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder>(
                      actionsGranted_,
                      ((bitField0_ & 0x00040000) == 0x00040000),
                      getParentForChildren(),
                      isClean());
              actionsGranted_ = null;
            }
            return actionsGrantedBuilder_;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.EventData)
        }

        static {
          defaultInstance = new EventData(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.EventData)
      }

      public interface PlayerOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.Player)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 account_id = 1;
         */
        boolean hasAccountId();
        /**
         * optional uint32 account_id = 1;
         */
        int getAccountId();

        /**
         * repeated uint32 ability_upgrades = 2;
         */
        java.util.List getAbilityUpgradesList();
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        int getAbilityUpgradesCount();
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        int getAbilityUpgrades(int index);

        /**
         * optional uint32 player_slot = 3;
         */
        boolean hasPlayerSlot();
        /**
         * optional uint32 player_slot = 3;
         */
        int getPlayerSlot();

        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        java.util.List 
            getEquippedEconItemsList();
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem getEquippedEconItems(int index);
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        int getEquippedEconItemsCount();
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        java.util.List 
            getEquippedEconItemsOrBuilderList();
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder getEquippedEconItemsOrBuilder(
            int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        java.util.List 
            getKillsList();
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill getKills(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        int getKillsCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        java.util.List 
            getKillsOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder getKillsOrBuilder(
            int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        java.util.List 
            getItemsList();
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase getItems(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        int getItemsCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        java.util.List 
            getItemsOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder getItemsOrBuilder(
            int index);

        /**
         * optional uint32 avg_kills_x16 = 7;
         */
        boolean hasAvgKillsX16();
        /**
         * optional uint32 avg_kills_x16 = 7;
         */
        int getAvgKillsX16();

        /**
         * optional uint32 avg_deaths_x16 = 8;
         */
        boolean hasAvgDeathsX16();
        /**
         * optional uint32 avg_deaths_x16 = 8;
         */
        int getAvgDeathsX16();

        /**
         * optional uint32 avg_assists_x16 = 9;
         */
        boolean hasAvgAssistsX16();
        /**
         * optional uint32 avg_assists_x16 = 9;
         */
        int getAvgAssistsX16();

        /**
         * optional uint32 avg_gpm_x16 = 10;
         */
        boolean hasAvgGpmX16();
        /**
         * optional uint32 avg_gpm_x16 = 10;
         */
        int getAvgGpmX16();

        /**
         * optional uint32 avg_xpm_x16 = 11;
         */
        boolean hasAvgXpmX16();
        /**
         * optional uint32 avg_xpm_x16 = 11;
         */
        int getAvgXpmX16();

        /**
         * optional uint32 best_kills_x16 = 12;
         */
        boolean hasBestKillsX16();
        /**
         * optional uint32 best_kills_x16 = 12;
         */
        int getBestKillsX16();

        /**
         * optional uint32 best_assists_x16 = 13;
         */
        boolean hasBestAssistsX16();
        /**
         * optional uint32 best_assists_x16 = 13;
         */
        int getBestAssistsX16();

        /**
         * optional uint32 best_gpm_x16 = 14;
         */
        boolean hasBestGpmX16();
        /**
         * optional uint32 best_gpm_x16 = 14;
         */
        int getBestGpmX16();

        /**
         * optional uint32 best_xpm_x16 = 15;
         */
        boolean hasBestXpmX16();
        /**
         * optional uint32 best_xpm_x16 = 15;
         */
        int getBestXpmX16();

        /**
         * optional uint32 win_streak = 16;
         */
        boolean hasWinStreak();
        /**
         * optional uint32 win_streak = 16;
         */
        int getWinStreak();

        /**
         * optional uint32 best_win_streak = 17;
         */
        boolean hasBestWinStreak();
        /**
         * optional uint32 best_win_streak = 17;
         */
        int getBestWinStreak();

        /**
         * optional float fight_score = 18;
         */
        boolean hasFightScore();
        /**
         * optional float fight_score = 18;
         */
        float getFightScore();

        /**
         * optional float farm_score = 19;
         */
        boolean hasFarmScore();
        /**
         * optional float farm_score = 19;
         */
        float getFarmScore();

        /**
         * optional float support_score = 20;
         */
        boolean hasSupportScore();
        /**
         * optional float support_score = 20;
         */
        float getSupportScore();

        /**
         * optional float push_score = 21;
         */
        boolean hasPushScore();
        /**
         * optional float push_score = 21;
         */
        float getPushScore();

        /**
         * repeated uint32 level_up_times = 22;
         */
        java.util.List getLevelUpTimesList();
        /**
         * repeated uint32 level_up_times = 22;
         */
        int getLevelUpTimesCount();
        /**
         * repeated uint32 level_up_times = 22;
         */
        int getLevelUpTimes(int index);

        /**
         * repeated float graph_net_worth = 23;
         */
        java.util.List getGraphNetWorthList();
        /**
         * repeated float graph_net_worth = 23;
         */
        int getGraphNetWorthCount();
        /**
         * repeated float graph_net_worth = 23;
         */
        float getGraphNetWorth(int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        java.util.List 
            getInventorySnapshotList();
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot getInventorySnapshot(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        int getInventorySnapshotCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        java.util.List 
            getInventorySnapshotOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder getInventorySnapshotOrBuilder(
            int index);

        /**
         * optional bool avg_stats_calibrated = 25;
         */
        boolean hasAvgStatsCalibrated();
        /**
         * optional bool avg_stats_calibrated = 25;
         */
        boolean getAvgStatsCalibrated();

        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        java.util.List 
            getAutoStyleCriteriaList();
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria getAutoStyleCriteria(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        int getAutoStyleCriteriaCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        java.util.List 
            getAutoStyleCriteriaOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder getAutoStyleCriteriaOrBuilder(
            int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        java.util.List 
            getEventDataList();
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData getEventData(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        int getEventDataCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        java.util.List 
            getEventDataOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder getEventDataOrBuilder(
            int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        java.util.List 
            getStrangeGemProgressList();
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress getStrangeGemProgress(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        int getStrangeGemProgressCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        java.util.List 
            getStrangeGemProgressOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder getStrangeGemProgressOrBuilder(
            int index);

        /**
         * optional uint32 hero_xp = 31;
         */
        boolean hasHeroXp();
        /**
         * optional uint32 hero_xp = 31;
         */
        int getHeroXp();

        /**
         * optional uint32 camps_stacked = 32;
         */
        boolean hasCampsStacked();
        /**
         * optional uint32 camps_stacked = 32;
         */
        int getCampsStacked();

        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        java.util.List 
            getVictoryPredictionList();
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction getVictoryPrediction(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        int getVictoryPredictionCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        java.util.List 
            getVictoryPredictionOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder getVictoryPredictionOrBuilder(
            int index);

        /**
         * optional uint32 lane_selection_flags = 34;
         */
        boolean hasLaneSelectionFlags();
        /**
         * optional uint32 lane_selection_flags = 34;
         */
        int getLaneSelectionFlags();

        /**
         * optional uint32 rampages = 35;
         */
        boolean hasRampages();
        /**
         * optional uint32 rampages = 35;
         */
        int getRampages();

        /**
         * optional uint32 triple_kills = 36;
         */
        boolean hasTripleKills();
        /**
         * optional uint32 triple_kills = 36;
         */
        int getTripleKills();

        /**
         * optional uint32 aegis_snatched = 37;
         */
        boolean hasAegisSnatched();
        /**
         * optional uint32 aegis_snatched = 37;
         */
        int getAegisSnatched();

        /**
         * optional uint32 rapiers_purchased = 38;
         */
        boolean hasRapiersPurchased();
        /**
         * optional uint32 rapiers_purchased = 38;
         */
        int getRapiersPurchased();

        /**
         * optional uint32 couriers_killed = 39;
         */
        boolean hasCouriersKilled();
        /**
         * optional uint32 couriers_killed = 39;
         */
        int getCouriersKilled();

        /**
         * optional uint32 net_worth_rank = 40;
         */
        boolean hasNetWorthRank();
        /**
         * optional uint32 net_worth_rank = 40;
         */
        int getNetWorthRank();

        /**
         * optional uint32 support_gold_spent = 41;
         */
        boolean hasSupportGoldSpent();
        /**
         * optional uint32 support_gold_spent = 41;
         */
        int getSupportGoldSpent();

        /**
         * optional uint32 observer_wards_placed = 42;
         */
        boolean hasObserverWardsPlaced();
        /**
         * optional uint32 observer_wards_placed = 42;
         */
        int getObserverWardsPlaced();

        /**
         * optional uint32 sentry_wards_placed = 43;
         */
        boolean hasSentryWardsPlaced();
        /**
         * optional uint32 sentry_wards_placed = 43;
         */
        int getSentryWardsPlaced();

        /**
         * optional uint32 wards_dewarded = 44;
         */
        boolean hasWardsDewarded();
        /**
         * optional uint32 wards_dewarded = 44;
         */
        int getWardsDewarded();

        /**
         * optional float stun_duration = 45;
         */
        boolean hasStunDuration();
        /**
         * optional float stun_duration = 45;
         */
        float getStunDuration();

        /**
         * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
         */
        boolean hasRankMmrBoostType();
        /**
         * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
         */
        skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType getRankMmrBoostType();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.Player}
       */
      public static final class Player extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.Player)
          PlayerOrBuilder {
        // Use Player.newBuilder() to construct.
        private Player(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private Player(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final Player defaultInstance;
        public static Player getDefaultInstance() {
          return defaultInstance;
        }

        public Player getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private Player(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          int mutable_bitField1_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  accountId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    abilityUpgrades_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  abilityUpgrades_.add(input.readUInt32());
                  break;
                }
                case 18: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                    abilityUpgrades_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    abilityUpgrades_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000002;
                  playerSlot_ = input.readUInt32();
                  break;
                }
                case 34: {
                  if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                    equippedEconItems_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  equippedEconItems_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.PARSER, extensionRegistry));
                  break;
                }
                case 42: {
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    kills_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  kills_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.PARSER, extensionRegistry));
                  break;
                }
                case 50: {
                  if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                    items_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000020;
                  }
                  items_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.PARSER, extensionRegistry));
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000004;
                  avgKillsX16_ = input.readUInt32();
                  break;
                }
                case 64: {
                  bitField0_ |= 0x00000008;
                  avgDeathsX16_ = input.readUInt32();
                  break;
                }
                case 72: {
                  bitField0_ |= 0x00000010;
                  avgAssistsX16_ = input.readUInt32();
                  break;
                }
                case 80: {
                  bitField0_ |= 0x00000020;
                  avgGpmX16_ = input.readUInt32();
                  break;
                }
                case 88: {
                  bitField0_ |= 0x00000040;
                  avgXpmX16_ = input.readUInt32();
                  break;
                }
                case 96: {
                  bitField0_ |= 0x00000080;
                  bestKillsX16_ = input.readUInt32();
                  break;
                }
                case 104: {
                  bitField0_ |= 0x00000100;
                  bestAssistsX16_ = input.readUInt32();
                  break;
                }
                case 112: {
                  bitField0_ |= 0x00000200;
                  bestGpmX16_ = input.readUInt32();
                  break;
                }
                case 120: {
                  bitField0_ |= 0x00000400;
                  bestXpmX16_ = input.readUInt32();
                  break;
                }
                case 128: {
                  bitField0_ |= 0x00000800;
                  winStreak_ = input.readUInt32();
                  break;
                }
                case 136: {
                  bitField0_ |= 0x00001000;
                  bestWinStreak_ = input.readUInt32();
                  break;
                }
                case 149: {
                  bitField0_ |= 0x00002000;
                  fightScore_ = input.readFloat();
                  break;
                }
                case 157: {
                  bitField0_ |= 0x00004000;
                  farmScore_ = input.readFloat();
                  break;
                }
                case 165: {
                  bitField0_ |= 0x00008000;
                  supportScore_ = input.readFloat();
                  break;
                }
                case 173: {
                  bitField0_ |= 0x00010000;
                  pushScore_ = input.readFloat();
                  break;
                }
                case 176: {
                  if (!((mutable_bitField0_ & 0x00200000) == 0x00200000)) {
                    levelUpTimes_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00200000;
                  }
                  levelUpTimes_.add(input.readUInt32());
                  break;
                }
                case 178: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00200000) == 0x00200000) && input.getBytesUntilLimit() > 0) {
                    levelUpTimes_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00200000;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    levelUpTimes_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 189: {
                  if (!((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
                    graphNetWorth_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00400000;
                  }
                  graphNetWorth_.add(input.readFloat());
                  break;
                }
                case 186: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00400000) == 0x00400000) && input.getBytesUntilLimit() > 0) {
                    graphNetWorth_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00400000;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphNetWorth_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 194: {
                  if (!((mutable_bitField0_ & 0x00800000) == 0x00800000)) {
                    inventorySnapshot_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00800000;
                  }
                  inventorySnapshot_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.PARSER, extensionRegistry));
                  break;
                }
                case 200: {
                  bitField0_ |= 0x00020000;
                  avgStatsCalibrated_ = input.readBool();
                  break;
                }
                case 210: {
                  if (!((mutable_bitField0_ & 0x02000000) == 0x02000000)) {
                    autoStyleCriteria_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x02000000;
                  }
                  autoStyleCriteria_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.PARSER, extensionRegistry));
                  break;
                }
                case 234: {
                  if (!((mutable_bitField0_ & 0x04000000) == 0x04000000)) {
                    eventData_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x04000000;
                  }
                  eventData_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.PARSER, extensionRegistry));
                  break;
                }
                case 242: {
                  if (!((mutable_bitField0_ & 0x08000000) == 0x08000000)) {
                    strangeGemProgress_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x08000000;
                  }
                  strangeGemProgress_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.PARSER, extensionRegistry));
                  break;
                }
                case 248: {
                  bitField0_ |= 0x00040000;
                  heroXp_ = input.readUInt32();
                  break;
                }
                case 256: {
                  bitField0_ |= 0x00080000;
                  campsStacked_ = input.readUInt32();
                  break;
                }
                case 266: {
                  if (!((mutable_bitField0_ & 0x40000000) == 0x40000000)) {
                    victoryPrediction_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x40000000;
                  }
                  victoryPrediction_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.PARSER, extensionRegistry));
                  break;
                }
                case 272: {
                  bitField0_ |= 0x00100000;
                  laneSelectionFlags_ = input.readUInt32();
                  break;
                }
                case 280: {
                  bitField0_ |= 0x00200000;
                  rampages_ = input.readUInt32();
                  break;
                }
                case 288: {
                  bitField0_ |= 0x00400000;
                  tripleKills_ = input.readUInt32();
                  break;
                }
                case 296: {
                  bitField0_ |= 0x00800000;
                  aegisSnatched_ = input.readUInt32();
                  break;
                }
                case 304: {
                  bitField0_ |= 0x01000000;
                  rapiersPurchased_ = input.readUInt32();
                  break;
                }
                case 312: {
                  bitField0_ |= 0x02000000;
                  couriersKilled_ = input.readUInt32();
                  break;
                }
                case 320: {
                  bitField0_ |= 0x04000000;
                  netWorthRank_ = input.readUInt32();
                  break;
                }
                case 328: {
                  bitField0_ |= 0x08000000;
                  supportGoldSpent_ = input.readUInt32();
                  break;
                }
                case 336: {
                  bitField0_ |= 0x10000000;
                  observerWardsPlaced_ = input.readUInt32();
                  break;
                }
                case 344: {
                  bitField0_ |= 0x20000000;
                  sentryWardsPlaced_ = input.readUInt32();
                  break;
                }
                case 352: {
                  bitField0_ |= 0x40000000;
                  wardsDewarded_ = input.readUInt32();
                  break;
                }
                case 365: {
                  bitField0_ |= 0x80000000;
                  stunDuration_ = input.readFloat();
                  break;
                }
                case 368: {
                  int rawValue = input.readEnum();
                  skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType value = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.valueOf(rawValue);
                  if (value == null) {
                    unknownFields.mergeVarintField(46, rawValue);
                  } else {
                    bitField1_ |= 0x00000001;
                    rankMmrBoostType_ = value;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
              abilityUpgrades_ = java.util.Collections.unmodifiableList(abilityUpgrades_);
            }
            if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
              equippedEconItems_ = java.util.Collections.unmodifiableList(equippedEconItems_);
            }
            if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
              kills_ = java.util.Collections.unmodifiableList(kills_);
            }
            if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
              items_ = java.util.Collections.unmodifiableList(items_);
            }
            if (((mutable_bitField0_ & 0x00200000) == 0x00200000)) {
              levelUpTimes_ = java.util.Collections.unmodifiableList(levelUpTimes_);
            }
            if (((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
              graphNetWorth_ = java.util.Collections.unmodifiableList(graphNetWorth_);
            }
            if (((mutable_bitField0_ & 0x00800000) == 0x00800000)) {
              inventorySnapshot_ = java.util.Collections.unmodifiableList(inventorySnapshot_);
            }
            if (((mutable_bitField0_ & 0x02000000) == 0x02000000)) {
              autoStyleCriteria_ = java.util.Collections.unmodifiableList(autoStyleCriteria_);
            }
            if (((mutable_bitField0_ & 0x04000000) == 0x04000000)) {
              eventData_ = java.util.Collections.unmodifiableList(eventData_);
            }
            if (((mutable_bitField0_ & 0x08000000) == 0x08000000)) {
              strangeGemProgress_ = java.util.Collections.unmodifiableList(strangeGemProgress_);
            }
            if (((mutable_bitField0_ & 0x40000000) == 0x40000000)) {
              victoryPrediction_ = java.util.Collections.unmodifiableList(victoryPrediction_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder.class);
        }

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

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

        private int bitField0_;
        private int bitField1_;
        public static final int ACCOUNT_ID_FIELD_NUMBER = 1;
        private int accountId_;
        /**
         * optional uint32 account_id = 1;
         */
        public boolean hasAccountId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 account_id = 1;
         */
        public int getAccountId() {
          return accountId_;
        }

        public static final int ABILITY_UPGRADES_FIELD_NUMBER = 2;
        private java.util.List abilityUpgrades_;
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        public java.util.List
            getAbilityUpgradesList() {
          return abilityUpgrades_;
        }
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        public int getAbilityUpgradesCount() {
          return abilityUpgrades_.size();
        }
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        public int getAbilityUpgrades(int index) {
          return abilityUpgrades_.get(index);
        }

        public static final int PLAYER_SLOT_FIELD_NUMBER = 3;
        private int playerSlot_;
        /**
         * optional uint32 player_slot = 3;
         */
        public boolean hasPlayerSlot() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 player_slot = 3;
         */
        public int getPlayerSlot() {
          return playerSlot_;
        }

        public static final int EQUIPPED_ECON_ITEMS_FIELD_NUMBER = 4;
        private java.util.List equippedEconItems_;
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public java.util.List getEquippedEconItemsList() {
          return equippedEconItems_;
        }
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public java.util.List 
            getEquippedEconItemsOrBuilderList() {
          return equippedEconItems_;
        }
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public int getEquippedEconItemsCount() {
          return equippedEconItems_.size();
        }
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem getEquippedEconItems(int index) {
          return equippedEconItems_.get(index);
        }
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder getEquippedEconItemsOrBuilder(
            int index) {
          return equippedEconItems_.get(index);
        }

        public static final int KILLS_FIELD_NUMBER = 5;
        private java.util.List kills_;
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public java.util.List getKillsList() {
          return kills_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public java.util.List 
            getKillsOrBuilderList() {
          return kills_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public int getKillsCount() {
          return kills_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill getKills(int index) {
          return kills_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder getKillsOrBuilder(
            int index) {
          return kills_.get(index);
        }

        public static final int ITEMS_FIELD_NUMBER = 6;
        private java.util.List items_;
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public java.util.List getItemsList() {
          return items_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public java.util.List 
            getItemsOrBuilderList() {
          return items_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public int getItemsCount() {
          return items_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase getItems(int index) {
          return items_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder getItemsOrBuilder(
            int index) {
          return items_.get(index);
        }

        public static final int AVG_KILLS_X16_FIELD_NUMBER = 7;
        private int avgKillsX16_;
        /**
         * optional uint32 avg_kills_x16 = 7;
         */
        public boolean hasAvgKillsX16() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 avg_kills_x16 = 7;
         */
        public int getAvgKillsX16() {
          return avgKillsX16_;
        }

        public static final int AVG_DEATHS_X16_FIELD_NUMBER = 8;
        private int avgDeathsX16_;
        /**
         * optional uint32 avg_deaths_x16 = 8;
         */
        public boolean hasAvgDeathsX16() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 avg_deaths_x16 = 8;
         */
        public int getAvgDeathsX16() {
          return avgDeathsX16_;
        }

        public static final int AVG_ASSISTS_X16_FIELD_NUMBER = 9;
        private int avgAssistsX16_;
        /**
         * optional uint32 avg_assists_x16 = 9;
         */
        public boolean hasAvgAssistsX16() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 avg_assists_x16 = 9;
         */
        public int getAvgAssistsX16() {
          return avgAssistsX16_;
        }

        public static final int AVG_GPM_X16_FIELD_NUMBER = 10;
        private int avgGpmX16_;
        /**
         * optional uint32 avg_gpm_x16 = 10;
         */
        public boolean hasAvgGpmX16() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional uint32 avg_gpm_x16 = 10;
         */
        public int getAvgGpmX16() {
          return avgGpmX16_;
        }

        public static final int AVG_XPM_X16_FIELD_NUMBER = 11;
        private int avgXpmX16_;
        /**
         * optional uint32 avg_xpm_x16 = 11;
         */
        public boolean hasAvgXpmX16() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint32 avg_xpm_x16 = 11;
         */
        public int getAvgXpmX16() {
          return avgXpmX16_;
        }

        public static final int BEST_KILLS_X16_FIELD_NUMBER = 12;
        private int bestKillsX16_;
        /**
         * optional uint32 best_kills_x16 = 12;
         */
        public boolean hasBestKillsX16() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * optional uint32 best_kills_x16 = 12;
         */
        public int getBestKillsX16() {
          return bestKillsX16_;
        }

        public static final int BEST_ASSISTS_X16_FIELD_NUMBER = 13;
        private int bestAssistsX16_;
        /**
         * optional uint32 best_assists_x16 = 13;
         */
        public boolean hasBestAssistsX16() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * optional uint32 best_assists_x16 = 13;
         */
        public int getBestAssistsX16() {
          return bestAssistsX16_;
        }

        public static final int BEST_GPM_X16_FIELD_NUMBER = 14;
        private int bestGpmX16_;
        /**
         * optional uint32 best_gpm_x16 = 14;
         */
        public boolean hasBestGpmX16() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional uint32 best_gpm_x16 = 14;
         */
        public int getBestGpmX16() {
          return bestGpmX16_;
        }

        public static final int BEST_XPM_X16_FIELD_NUMBER = 15;
        private int bestXpmX16_;
        /**
         * optional uint32 best_xpm_x16 = 15;
         */
        public boolean hasBestXpmX16() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * optional uint32 best_xpm_x16 = 15;
         */
        public int getBestXpmX16() {
          return bestXpmX16_;
        }

        public static final int WIN_STREAK_FIELD_NUMBER = 16;
        private int winStreak_;
        /**
         * optional uint32 win_streak = 16;
         */
        public boolean hasWinStreak() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        /**
         * optional uint32 win_streak = 16;
         */
        public int getWinStreak() {
          return winStreak_;
        }

        public static final int BEST_WIN_STREAK_FIELD_NUMBER = 17;
        private int bestWinStreak_;
        /**
         * optional uint32 best_win_streak = 17;
         */
        public boolean hasBestWinStreak() {
          return ((bitField0_ & 0x00001000) == 0x00001000);
        }
        /**
         * optional uint32 best_win_streak = 17;
         */
        public int getBestWinStreak() {
          return bestWinStreak_;
        }

        public static final int FIGHT_SCORE_FIELD_NUMBER = 18;
        private float fightScore_;
        /**
         * optional float fight_score = 18;
         */
        public boolean hasFightScore() {
          return ((bitField0_ & 0x00002000) == 0x00002000);
        }
        /**
         * optional float fight_score = 18;
         */
        public float getFightScore() {
          return fightScore_;
        }

        public static final int FARM_SCORE_FIELD_NUMBER = 19;
        private float farmScore_;
        /**
         * optional float farm_score = 19;
         */
        public boolean hasFarmScore() {
          return ((bitField0_ & 0x00004000) == 0x00004000);
        }
        /**
         * optional float farm_score = 19;
         */
        public float getFarmScore() {
          return farmScore_;
        }

        public static final int SUPPORT_SCORE_FIELD_NUMBER = 20;
        private float supportScore_;
        /**
         * optional float support_score = 20;
         */
        public boolean hasSupportScore() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        /**
         * optional float support_score = 20;
         */
        public float getSupportScore() {
          return supportScore_;
        }

        public static final int PUSH_SCORE_FIELD_NUMBER = 21;
        private float pushScore_;
        /**
         * optional float push_score = 21;
         */
        public boolean hasPushScore() {
          return ((bitField0_ & 0x00010000) == 0x00010000);
        }
        /**
         * optional float push_score = 21;
         */
        public float getPushScore() {
          return pushScore_;
        }

        public static final int LEVEL_UP_TIMES_FIELD_NUMBER = 22;
        private java.util.List levelUpTimes_;
        /**
         * repeated uint32 level_up_times = 22;
         */
        public java.util.List
            getLevelUpTimesList() {
          return levelUpTimes_;
        }
        /**
         * repeated uint32 level_up_times = 22;
         */
        public int getLevelUpTimesCount() {
          return levelUpTimes_.size();
        }
        /**
         * repeated uint32 level_up_times = 22;
         */
        public int getLevelUpTimes(int index) {
          return levelUpTimes_.get(index);
        }

        public static final int GRAPH_NET_WORTH_FIELD_NUMBER = 23;
        private java.util.List graphNetWorth_;
        /**
         * repeated float graph_net_worth = 23;
         */
        public java.util.List
            getGraphNetWorthList() {
          return graphNetWorth_;
        }
        /**
         * repeated float graph_net_worth = 23;
         */
        public int getGraphNetWorthCount() {
          return graphNetWorth_.size();
        }
        /**
         * repeated float graph_net_worth = 23;
         */
        public float getGraphNetWorth(int index) {
          return graphNetWorth_.get(index);
        }

        public static final int INVENTORY_SNAPSHOT_FIELD_NUMBER = 24;
        private java.util.List inventorySnapshot_;
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public java.util.List getInventorySnapshotList() {
          return inventorySnapshot_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public java.util.List 
            getInventorySnapshotOrBuilderList() {
          return inventorySnapshot_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public int getInventorySnapshotCount() {
          return inventorySnapshot_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot getInventorySnapshot(int index) {
          return inventorySnapshot_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder getInventorySnapshotOrBuilder(
            int index) {
          return inventorySnapshot_.get(index);
        }

        public static final int AVG_STATS_CALIBRATED_FIELD_NUMBER = 25;
        private boolean avgStatsCalibrated_;
        /**
         * optional bool avg_stats_calibrated = 25;
         */
        public boolean hasAvgStatsCalibrated() {
          return ((bitField0_ & 0x00020000) == 0x00020000);
        }
        /**
         * optional bool avg_stats_calibrated = 25;
         */
        public boolean getAvgStatsCalibrated() {
          return avgStatsCalibrated_;
        }

        public static final int AUTO_STYLE_CRITERIA_FIELD_NUMBER = 26;
        private java.util.List autoStyleCriteria_;
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public java.util.List getAutoStyleCriteriaList() {
          return autoStyleCriteria_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public java.util.List 
            getAutoStyleCriteriaOrBuilderList() {
          return autoStyleCriteria_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public int getAutoStyleCriteriaCount() {
          return autoStyleCriteria_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria getAutoStyleCriteria(int index) {
          return autoStyleCriteria_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder getAutoStyleCriteriaOrBuilder(
            int index) {
          return autoStyleCriteria_.get(index);
        }

        public static final int EVENT_DATA_FIELD_NUMBER = 29;
        private java.util.List eventData_;
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public java.util.List getEventDataList() {
          return eventData_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public java.util.List 
            getEventDataOrBuilderList() {
          return eventData_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public int getEventDataCount() {
          return eventData_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData getEventData(int index) {
          return eventData_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder getEventDataOrBuilder(
            int index) {
          return eventData_.get(index);
        }

        public static final int STRANGE_GEM_PROGRESS_FIELD_NUMBER = 30;
        private java.util.List strangeGemProgress_;
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public java.util.List getStrangeGemProgressList() {
          return strangeGemProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public java.util.List 
            getStrangeGemProgressOrBuilderList() {
          return strangeGemProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public int getStrangeGemProgressCount() {
          return strangeGemProgress_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress getStrangeGemProgress(int index) {
          return strangeGemProgress_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder getStrangeGemProgressOrBuilder(
            int index) {
          return strangeGemProgress_.get(index);
        }

        public static final int HERO_XP_FIELD_NUMBER = 31;
        private int heroXp_;
        /**
         * optional uint32 hero_xp = 31;
         */
        public boolean hasHeroXp() {
          return ((bitField0_ & 0x00040000) == 0x00040000);
        }
        /**
         * optional uint32 hero_xp = 31;
         */
        public int getHeroXp() {
          return heroXp_;
        }

        public static final int CAMPS_STACKED_FIELD_NUMBER = 32;
        private int campsStacked_;
        /**
         * optional uint32 camps_stacked = 32;
         */
        public boolean hasCampsStacked() {
          return ((bitField0_ & 0x00080000) == 0x00080000);
        }
        /**
         * optional uint32 camps_stacked = 32;
         */
        public int getCampsStacked() {
          return campsStacked_;
        }

        public static final int VICTORY_PREDICTION_FIELD_NUMBER = 33;
        private java.util.List victoryPrediction_;
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public java.util.List getVictoryPredictionList() {
          return victoryPrediction_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public java.util.List 
            getVictoryPredictionOrBuilderList() {
          return victoryPrediction_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public int getVictoryPredictionCount() {
          return victoryPrediction_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction getVictoryPrediction(int index) {
          return victoryPrediction_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder getVictoryPredictionOrBuilder(
            int index) {
          return victoryPrediction_.get(index);
        }

        public static final int LANE_SELECTION_FLAGS_FIELD_NUMBER = 34;
        private int laneSelectionFlags_;
        /**
         * optional uint32 lane_selection_flags = 34;
         */
        public boolean hasLaneSelectionFlags() {
          return ((bitField0_ & 0x00100000) == 0x00100000);
        }
        /**
         * optional uint32 lane_selection_flags = 34;
         */
        public int getLaneSelectionFlags() {
          return laneSelectionFlags_;
        }

        public static final int RAMPAGES_FIELD_NUMBER = 35;
        private int rampages_;
        /**
         * optional uint32 rampages = 35;
         */
        public boolean hasRampages() {
          return ((bitField0_ & 0x00200000) == 0x00200000);
        }
        /**
         * optional uint32 rampages = 35;
         */
        public int getRampages() {
          return rampages_;
        }

        public static final int TRIPLE_KILLS_FIELD_NUMBER = 36;
        private int tripleKills_;
        /**
         * optional uint32 triple_kills = 36;
         */
        public boolean hasTripleKills() {
          return ((bitField0_ & 0x00400000) == 0x00400000);
        }
        /**
         * optional uint32 triple_kills = 36;
         */
        public int getTripleKills() {
          return tripleKills_;
        }

        public static final int AEGIS_SNATCHED_FIELD_NUMBER = 37;
        private int aegisSnatched_;
        /**
         * optional uint32 aegis_snatched = 37;
         */
        public boolean hasAegisSnatched() {
          return ((bitField0_ & 0x00800000) == 0x00800000);
        }
        /**
         * optional uint32 aegis_snatched = 37;
         */
        public int getAegisSnatched() {
          return aegisSnatched_;
        }

        public static final int RAPIERS_PURCHASED_FIELD_NUMBER = 38;
        private int rapiersPurchased_;
        /**
         * optional uint32 rapiers_purchased = 38;
         */
        public boolean hasRapiersPurchased() {
          return ((bitField0_ & 0x01000000) == 0x01000000);
        }
        /**
         * optional uint32 rapiers_purchased = 38;
         */
        public int getRapiersPurchased() {
          return rapiersPurchased_;
        }

        public static final int COURIERS_KILLED_FIELD_NUMBER = 39;
        private int couriersKilled_;
        /**
         * optional uint32 couriers_killed = 39;
         */
        public boolean hasCouriersKilled() {
          return ((bitField0_ & 0x02000000) == 0x02000000);
        }
        /**
         * optional uint32 couriers_killed = 39;
         */
        public int getCouriersKilled() {
          return couriersKilled_;
        }

        public static final int NET_WORTH_RANK_FIELD_NUMBER = 40;
        private int netWorthRank_;
        /**
         * optional uint32 net_worth_rank = 40;
         */
        public boolean hasNetWorthRank() {
          return ((bitField0_ & 0x04000000) == 0x04000000);
        }
        /**
         * optional uint32 net_worth_rank = 40;
         */
        public int getNetWorthRank() {
          return netWorthRank_;
        }

        public static final int SUPPORT_GOLD_SPENT_FIELD_NUMBER = 41;
        private int supportGoldSpent_;
        /**
         * optional uint32 support_gold_spent = 41;
         */
        public boolean hasSupportGoldSpent() {
          return ((bitField0_ & 0x08000000) == 0x08000000);
        }
        /**
         * optional uint32 support_gold_spent = 41;
         */
        public int getSupportGoldSpent() {
          return supportGoldSpent_;
        }

        public static final int OBSERVER_WARDS_PLACED_FIELD_NUMBER = 42;
        private int observerWardsPlaced_;
        /**
         * optional uint32 observer_wards_placed = 42;
         */
        public boolean hasObserverWardsPlaced() {
          return ((bitField0_ & 0x10000000) == 0x10000000);
        }
        /**
         * optional uint32 observer_wards_placed = 42;
         */
        public int getObserverWardsPlaced() {
          return observerWardsPlaced_;
        }

        public static final int SENTRY_WARDS_PLACED_FIELD_NUMBER = 43;
        private int sentryWardsPlaced_;
        /**
         * optional uint32 sentry_wards_placed = 43;
         */
        public boolean hasSentryWardsPlaced() {
          return ((bitField0_ & 0x20000000) == 0x20000000);
        }
        /**
         * optional uint32 sentry_wards_placed = 43;
         */
        public int getSentryWardsPlaced() {
          return sentryWardsPlaced_;
        }

        public static final int WARDS_DEWARDED_FIELD_NUMBER = 44;
        private int wardsDewarded_;
        /**
         * optional uint32 wards_dewarded = 44;
         */
        public boolean hasWardsDewarded() {
          return ((bitField0_ & 0x40000000) == 0x40000000);
        }
        /**
         * optional uint32 wards_dewarded = 44;
         */
        public int getWardsDewarded() {
          return wardsDewarded_;
        }

        public static final int STUN_DURATION_FIELD_NUMBER = 45;
        private float stunDuration_;
        /**
         * optional float stun_duration = 45;
         */
        public boolean hasStunDuration() {
          return ((bitField0_ & 0x80000000) == 0x80000000);
        }
        /**
         * optional float stun_duration = 45;
         */
        public float getStunDuration() {
          return stunDuration_;
        }

        public static final int RANK_MMR_BOOST_TYPE_FIELD_NUMBER = 46;
        private skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType rankMmrBoostType_;
        /**
         * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
         */
        public boolean hasRankMmrBoostType() {
          return ((bitField1_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
         */
        public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType getRankMmrBoostType() {
          return rankMmrBoostType_;
        }

        private void initFields() {
          accountId_ = 0;
          abilityUpgrades_ = java.util.Collections.emptyList();
          playerSlot_ = 0;
          equippedEconItems_ = java.util.Collections.emptyList();
          kills_ = java.util.Collections.emptyList();
          items_ = java.util.Collections.emptyList();
          avgKillsX16_ = 0;
          avgDeathsX16_ = 0;
          avgAssistsX16_ = 0;
          avgGpmX16_ = 0;
          avgXpmX16_ = 0;
          bestKillsX16_ = 0;
          bestAssistsX16_ = 0;
          bestGpmX16_ = 0;
          bestXpmX16_ = 0;
          winStreak_ = 0;
          bestWinStreak_ = 0;
          fightScore_ = 0F;
          farmScore_ = 0F;
          supportScore_ = 0F;
          pushScore_ = 0F;
          levelUpTimes_ = java.util.Collections.emptyList();
          graphNetWorth_ = java.util.Collections.emptyList();
          inventorySnapshot_ = java.util.Collections.emptyList();
          avgStatsCalibrated_ = false;
          autoStyleCriteria_ = java.util.Collections.emptyList();
          eventData_ = java.util.Collections.emptyList();
          strangeGemProgress_ = java.util.Collections.emptyList();
          heroXp_ = 0;
          campsStacked_ = 0;
          victoryPrediction_ = java.util.Collections.emptyList();
          laneSelectionFlags_ = 0;
          rampages_ = 0;
          tripleKills_ = 0;
          aegisSnatched_ = 0;
          rapiersPurchased_ = 0;
          couriersKilled_ = 0;
          netWorthRank_ = 0;
          supportGoldSpent_ = 0;
          observerWardsPlaced_ = 0;
          sentryWardsPlaced_ = 0;
          wardsDewarded_ = 0;
          stunDuration_ = 0F;
          rankMmrBoostType_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.k_EDOTAMMRBoostType_None;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, accountId_);
          }
          for (int i = 0; i < abilityUpgrades_.size(); i++) {
            output.writeUInt32(2, abilityUpgrades_.get(i));
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(3, playerSlot_);
          }
          for (int i = 0; i < equippedEconItems_.size(); i++) {
            output.writeMessage(4, equippedEconItems_.get(i));
          }
          for (int i = 0; i < kills_.size(); i++) {
            output.writeMessage(5, kills_.get(i));
          }
          for (int i = 0; i < items_.size(); i++) {
            output.writeMessage(6, items_.get(i));
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(7, avgKillsX16_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(8, avgDeathsX16_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeUInt32(9, avgAssistsX16_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeUInt32(10, avgGpmX16_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeUInt32(11, avgXpmX16_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            output.writeUInt32(12, bestKillsX16_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            output.writeUInt32(13, bestAssistsX16_);
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            output.writeUInt32(14, bestGpmX16_);
          }
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            output.writeUInt32(15, bestXpmX16_);
          }
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            output.writeUInt32(16, winStreak_);
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            output.writeUInt32(17, bestWinStreak_);
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            output.writeFloat(18, fightScore_);
          }
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            output.writeFloat(19, farmScore_);
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            output.writeFloat(20, supportScore_);
          }
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            output.writeFloat(21, pushScore_);
          }
          for (int i = 0; i < levelUpTimes_.size(); i++) {
            output.writeUInt32(22, levelUpTimes_.get(i));
          }
          for (int i = 0; i < graphNetWorth_.size(); i++) {
            output.writeFloat(23, graphNetWorth_.get(i));
          }
          for (int i = 0; i < inventorySnapshot_.size(); i++) {
            output.writeMessage(24, inventorySnapshot_.get(i));
          }
          if (((bitField0_ & 0x00020000) == 0x00020000)) {
            output.writeBool(25, avgStatsCalibrated_);
          }
          for (int i = 0; i < autoStyleCriteria_.size(); i++) {
            output.writeMessage(26, autoStyleCriteria_.get(i));
          }
          for (int i = 0; i < eventData_.size(); i++) {
            output.writeMessage(29, eventData_.get(i));
          }
          for (int i = 0; i < strangeGemProgress_.size(); i++) {
            output.writeMessage(30, strangeGemProgress_.get(i));
          }
          if (((bitField0_ & 0x00040000) == 0x00040000)) {
            output.writeUInt32(31, heroXp_);
          }
          if (((bitField0_ & 0x00080000) == 0x00080000)) {
            output.writeUInt32(32, campsStacked_);
          }
          for (int i = 0; i < victoryPrediction_.size(); i++) {
            output.writeMessage(33, victoryPrediction_.get(i));
          }
          if (((bitField0_ & 0x00100000) == 0x00100000)) {
            output.writeUInt32(34, laneSelectionFlags_);
          }
          if (((bitField0_ & 0x00200000) == 0x00200000)) {
            output.writeUInt32(35, rampages_);
          }
          if (((bitField0_ & 0x00400000) == 0x00400000)) {
            output.writeUInt32(36, tripleKills_);
          }
          if (((bitField0_ & 0x00800000) == 0x00800000)) {
            output.writeUInt32(37, aegisSnatched_);
          }
          if (((bitField0_ & 0x01000000) == 0x01000000)) {
            output.writeUInt32(38, rapiersPurchased_);
          }
          if (((bitField0_ & 0x02000000) == 0x02000000)) {
            output.writeUInt32(39, couriersKilled_);
          }
          if (((bitField0_ & 0x04000000) == 0x04000000)) {
            output.writeUInt32(40, netWorthRank_);
          }
          if (((bitField0_ & 0x08000000) == 0x08000000)) {
            output.writeUInt32(41, supportGoldSpent_);
          }
          if (((bitField0_ & 0x10000000) == 0x10000000)) {
            output.writeUInt32(42, observerWardsPlaced_);
          }
          if (((bitField0_ & 0x20000000) == 0x20000000)) {
            output.writeUInt32(43, sentryWardsPlaced_);
          }
          if (((bitField0_ & 0x40000000) == 0x40000000)) {
            output.writeUInt32(44, wardsDewarded_);
          }
          if (((bitField0_ & 0x80000000) == 0x80000000)) {
            output.writeFloat(45, stunDuration_);
          }
          if (((bitField1_ & 0x00000001) == 0x00000001)) {
            output.writeEnum(46, rankMmrBoostType_.getNumber());
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, accountId_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < abilityUpgrades_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(abilityUpgrades_.get(i));
            }
            size += dataSize;
            size += 1 * getAbilityUpgradesList().size();
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, playerSlot_);
          }
          for (int i = 0; i < equippedEconItems_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, equippedEconItems_.get(i));
          }
          for (int i = 0; i < kills_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(5, kills_.get(i));
          }
          for (int i = 0; i < items_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(6, items_.get(i));
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(7, avgKillsX16_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(8, avgDeathsX16_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(9, avgAssistsX16_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(10, avgGpmX16_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(11, avgXpmX16_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(12, bestKillsX16_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(13, bestAssistsX16_);
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(14, bestGpmX16_);
          }
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(15, bestXpmX16_);
          }
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(16, winStreak_);
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(17, bestWinStreak_);
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(18, fightScore_);
          }
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(19, farmScore_);
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(20, supportScore_);
          }
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(21, pushScore_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < levelUpTimes_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(levelUpTimes_.get(i));
            }
            size += dataSize;
            size += 2 * getLevelUpTimesList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphNetWorthList().size();
            size += dataSize;
            size += 2 * getGraphNetWorthList().size();
          }
          for (int i = 0; i < inventorySnapshot_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(24, inventorySnapshot_.get(i));
          }
          if (((bitField0_ & 0x00020000) == 0x00020000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(25, avgStatsCalibrated_);
          }
          for (int i = 0; i < autoStyleCriteria_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(26, autoStyleCriteria_.get(i));
          }
          for (int i = 0; i < eventData_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(29, eventData_.get(i));
          }
          for (int i = 0; i < strangeGemProgress_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(30, strangeGemProgress_.get(i));
          }
          if (((bitField0_ & 0x00040000) == 0x00040000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(31, heroXp_);
          }
          if (((bitField0_ & 0x00080000) == 0x00080000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(32, campsStacked_);
          }
          for (int i = 0; i < victoryPrediction_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(33, victoryPrediction_.get(i));
          }
          if (((bitField0_ & 0x00100000) == 0x00100000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(34, laneSelectionFlags_);
          }
          if (((bitField0_ & 0x00200000) == 0x00200000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(35, rampages_);
          }
          if (((bitField0_ & 0x00400000) == 0x00400000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(36, tripleKills_);
          }
          if (((bitField0_ & 0x00800000) == 0x00800000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(37, aegisSnatched_);
          }
          if (((bitField0_ & 0x01000000) == 0x01000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(38, rapiersPurchased_);
          }
          if (((bitField0_ & 0x02000000) == 0x02000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(39, couriersKilled_);
          }
          if (((bitField0_ & 0x04000000) == 0x04000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(40, netWorthRank_);
          }
          if (((bitField0_ & 0x08000000) == 0x08000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(41, supportGoldSpent_);
          }
          if (((bitField0_ & 0x10000000) == 0x10000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(42, observerWardsPlaced_);
          }
          if (((bitField0_ & 0x20000000) == 0x20000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(43, sentryWardsPlaced_);
          }
          if (((bitField0_ & 0x40000000) == 0x40000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(44, wardsDewarded_);
          }
          if (((bitField0_ & 0x80000000) == 0x80000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(45, stunDuration_);
          }
          if (((bitField1_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeEnumSize(46, rankMmrBoostType_.getNumber());
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.Player}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.Player)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getEquippedEconItemsFieldBuilder();
              getKillsFieldBuilder();
              getItemsFieldBuilder();
              getInventorySnapshotFieldBuilder();
              getAutoStyleCriteriaFieldBuilder();
              getEventDataFieldBuilder();
              getStrangeGemProgressFieldBuilder();
              getVictoryPredictionFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            accountId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            abilityUpgrades_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            playerSlot_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            if (equippedEconItemsBuilder_ == null) {
              equippedEconItems_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              equippedEconItemsBuilder_.clear();
            }
            if (killsBuilder_ == null) {
              kills_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              killsBuilder_.clear();
            }
            if (itemsBuilder_ == null) {
              items_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              itemsBuilder_.clear();
            }
            avgKillsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000040);
            avgDeathsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000080);
            avgAssistsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000100);
            avgGpmX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000200);
            avgXpmX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000400);
            bestKillsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000800);
            bestAssistsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00001000);
            bestGpmX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00002000);
            bestXpmX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00004000);
            winStreak_ = 0;
            bitField0_ = (bitField0_ & ~0x00008000);
            bestWinStreak_ = 0;
            bitField0_ = (bitField0_ & ~0x00010000);
            fightScore_ = 0F;
            bitField0_ = (bitField0_ & ~0x00020000);
            farmScore_ = 0F;
            bitField0_ = (bitField0_ & ~0x00040000);
            supportScore_ = 0F;
            bitField0_ = (bitField0_ & ~0x00080000);
            pushScore_ = 0F;
            bitField0_ = (bitField0_ & ~0x00100000);
            levelUpTimes_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00200000);
            graphNetWorth_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00400000);
            if (inventorySnapshotBuilder_ == null) {
              inventorySnapshot_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00800000);
            } else {
              inventorySnapshotBuilder_.clear();
            }
            avgStatsCalibrated_ = false;
            bitField0_ = (bitField0_ & ~0x01000000);
            if (autoStyleCriteriaBuilder_ == null) {
              autoStyleCriteria_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x02000000);
            } else {
              autoStyleCriteriaBuilder_.clear();
            }
            if (eventDataBuilder_ == null) {
              eventData_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x04000000);
            } else {
              eventDataBuilder_.clear();
            }
            if (strangeGemProgressBuilder_ == null) {
              strangeGemProgress_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x08000000);
            } else {
              strangeGemProgressBuilder_.clear();
            }
            heroXp_ = 0;
            bitField0_ = (bitField0_ & ~0x10000000);
            campsStacked_ = 0;
            bitField0_ = (bitField0_ & ~0x20000000);
            if (victoryPredictionBuilder_ == null) {
              victoryPrediction_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x40000000);
            } else {
              victoryPredictionBuilder_.clear();
            }
            laneSelectionFlags_ = 0;
            bitField0_ = (bitField0_ & ~0x80000000);
            rampages_ = 0;
            bitField1_ = (bitField1_ & ~0x00000001);
            tripleKills_ = 0;
            bitField1_ = (bitField1_ & ~0x00000002);
            aegisSnatched_ = 0;
            bitField1_ = (bitField1_ & ~0x00000004);
            rapiersPurchased_ = 0;
            bitField1_ = (bitField1_ & ~0x00000008);
            couriersKilled_ = 0;
            bitField1_ = (bitField1_ & ~0x00000010);
            netWorthRank_ = 0;
            bitField1_ = (bitField1_ & ~0x00000020);
            supportGoldSpent_ = 0;
            bitField1_ = (bitField1_ & ~0x00000040);
            observerWardsPlaced_ = 0;
            bitField1_ = (bitField1_ & ~0x00000080);
            sentryWardsPlaced_ = 0;
            bitField1_ = (bitField1_ & ~0x00000100);
            wardsDewarded_ = 0;
            bitField1_ = (bitField1_ & ~0x00000200);
            stunDuration_ = 0F;
            bitField1_ = (bitField1_ & ~0x00000400);
            rankMmrBoostType_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.k_EDOTAMMRBoostType_None;
            bitField1_ = (bitField1_ & ~0x00000800);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player(this);
            int from_bitField0_ = bitField0_;
            int from_bitField1_ = bitField1_;
            int to_bitField0_ = 0;
            int to_bitField1_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.accountId_ = accountId_;
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              abilityUpgrades_ = java.util.Collections.unmodifiableList(abilityUpgrades_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.abilityUpgrades_ = abilityUpgrades_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000002;
            }
            result.playerSlot_ = playerSlot_;
            if (equippedEconItemsBuilder_ == null) {
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                equippedEconItems_ = java.util.Collections.unmodifiableList(equippedEconItems_);
                bitField0_ = (bitField0_ & ~0x00000008);
              }
              result.equippedEconItems_ = equippedEconItems_;
            } else {
              result.equippedEconItems_ = equippedEconItemsBuilder_.build();
            }
            if (killsBuilder_ == null) {
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                kills_ = java.util.Collections.unmodifiableList(kills_);
                bitField0_ = (bitField0_ & ~0x00000010);
              }
              result.kills_ = kills_;
            } else {
              result.kills_ = killsBuilder_.build();
            }
            if (itemsBuilder_ == null) {
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                items_ = java.util.Collections.unmodifiableList(items_);
                bitField0_ = (bitField0_ & ~0x00000020);
              }
              result.items_ = items_;
            } else {
              result.items_ = itemsBuilder_.build();
            }
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000004;
            }
            result.avgKillsX16_ = avgKillsX16_;
            if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
              to_bitField0_ |= 0x00000008;
            }
            result.avgDeathsX16_ = avgDeathsX16_;
            if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
              to_bitField0_ |= 0x00000010;
            }
            result.avgAssistsX16_ = avgAssistsX16_;
            if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
              to_bitField0_ |= 0x00000020;
            }
            result.avgGpmX16_ = avgGpmX16_;
            if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
              to_bitField0_ |= 0x00000040;
            }
            result.avgXpmX16_ = avgXpmX16_;
            if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
              to_bitField0_ |= 0x00000080;
            }
            result.bestKillsX16_ = bestKillsX16_;
            if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
              to_bitField0_ |= 0x00000100;
            }
            result.bestAssistsX16_ = bestAssistsX16_;
            if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
              to_bitField0_ |= 0x00000200;
            }
            result.bestGpmX16_ = bestGpmX16_;
            if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
              to_bitField0_ |= 0x00000400;
            }
            result.bestXpmX16_ = bestXpmX16_;
            if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
              to_bitField0_ |= 0x00000800;
            }
            result.winStreak_ = winStreak_;
            if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
              to_bitField0_ |= 0x00001000;
            }
            result.bestWinStreak_ = bestWinStreak_;
            if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
              to_bitField0_ |= 0x00002000;
            }
            result.fightScore_ = fightScore_;
            if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
              to_bitField0_ |= 0x00004000;
            }
            result.farmScore_ = farmScore_;
            if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
              to_bitField0_ |= 0x00008000;
            }
            result.supportScore_ = supportScore_;
            if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
              to_bitField0_ |= 0x00010000;
            }
            result.pushScore_ = pushScore_;
            if (((bitField0_ & 0x00200000) == 0x00200000)) {
              levelUpTimes_ = java.util.Collections.unmodifiableList(levelUpTimes_);
              bitField0_ = (bitField0_ & ~0x00200000);
            }
            result.levelUpTimes_ = levelUpTimes_;
            if (((bitField0_ & 0x00400000) == 0x00400000)) {
              graphNetWorth_ = java.util.Collections.unmodifiableList(graphNetWorth_);
              bitField0_ = (bitField0_ & ~0x00400000);
            }
            result.graphNetWorth_ = graphNetWorth_;
            if (inventorySnapshotBuilder_ == null) {
              if (((bitField0_ & 0x00800000) == 0x00800000)) {
                inventorySnapshot_ = java.util.Collections.unmodifiableList(inventorySnapshot_);
                bitField0_ = (bitField0_ & ~0x00800000);
              }
              result.inventorySnapshot_ = inventorySnapshot_;
            } else {
              result.inventorySnapshot_ = inventorySnapshotBuilder_.build();
            }
            if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
              to_bitField0_ |= 0x00020000;
            }
            result.avgStatsCalibrated_ = avgStatsCalibrated_;
            if (autoStyleCriteriaBuilder_ == null) {
              if (((bitField0_ & 0x02000000) == 0x02000000)) {
                autoStyleCriteria_ = java.util.Collections.unmodifiableList(autoStyleCriteria_);
                bitField0_ = (bitField0_ & ~0x02000000);
              }
              result.autoStyleCriteria_ = autoStyleCriteria_;
            } else {
              result.autoStyleCriteria_ = autoStyleCriteriaBuilder_.build();
            }
            if (eventDataBuilder_ == null) {
              if (((bitField0_ & 0x04000000) == 0x04000000)) {
                eventData_ = java.util.Collections.unmodifiableList(eventData_);
                bitField0_ = (bitField0_ & ~0x04000000);
              }
              result.eventData_ = eventData_;
            } else {
              result.eventData_ = eventDataBuilder_.build();
            }
            if (strangeGemProgressBuilder_ == null) {
              if (((bitField0_ & 0x08000000) == 0x08000000)) {
                strangeGemProgress_ = java.util.Collections.unmodifiableList(strangeGemProgress_);
                bitField0_ = (bitField0_ & ~0x08000000);
              }
              result.strangeGemProgress_ = strangeGemProgress_;
            } else {
              result.strangeGemProgress_ = strangeGemProgressBuilder_.build();
            }
            if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
              to_bitField0_ |= 0x00040000;
            }
            result.heroXp_ = heroXp_;
            if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
              to_bitField0_ |= 0x00080000;
            }
            result.campsStacked_ = campsStacked_;
            if (victoryPredictionBuilder_ == null) {
              if (((bitField0_ & 0x40000000) == 0x40000000)) {
                victoryPrediction_ = java.util.Collections.unmodifiableList(victoryPrediction_);
                bitField0_ = (bitField0_ & ~0x40000000);
              }
              result.victoryPrediction_ = victoryPrediction_;
            } else {
              result.victoryPrediction_ = victoryPredictionBuilder_.build();
            }
            if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
              to_bitField0_ |= 0x00100000;
            }
            result.laneSelectionFlags_ = laneSelectionFlags_;
            if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00200000;
            }
            result.rampages_ = rampages_;
            if (((from_bitField1_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00400000;
            }
            result.tripleKills_ = tripleKills_;
            if (((from_bitField1_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00800000;
            }
            result.aegisSnatched_ = aegisSnatched_;
            if (((from_bitField1_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x01000000;
            }
            result.rapiersPurchased_ = rapiersPurchased_;
            if (((from_bitField1_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x02000000;
            }
            result.couriersKilled_ = couriersKilled_;
            if (((from_bitField1_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x04000000;
            }
            result.netWorthRank_ = netWorthRank_;
            if (((from_bitField1_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x08000000;
            }
            result.supportGoldSpent_ = supportGoldSpent_;
            if (((from_bitField1_ & 0x00000080) == 0x00000080)) {
              to_bitField0_ |= 0x10000000;
            }
            result.observerWardsPlaced_ = observerWardsPlaced_;
            if (((from_bitField1_ & 0x00000100) == 0x00000100)) {
              to_bitField0_ |= 0x20000000;
            }
            result.sentryWardsPlaced_ = sentryWardsPlaced_;
            if (((from_bitField1_ & 0x00000200) == 0x00000200)) {
              to_bitField0_ |= 0x40000000;
            }
            result.wardsDewarded_ = wardsDewarded_;
            if (((from_bitField1_ & 0x00000400) == 0x00000400)) {
              to_bitField0_ |= 0x80000000;
            }
            result.stunDuration_ = stunDuration_;
            if (((from_bitField1_ & 0x00000800) == 0x00000800)) {
              to_bitField1_ |= 0x00000001;
            }
            result.rankMmrBoostType_ = rankMmrBoostType_;
            result.bitField0_ = to_bitField0_;
            result.bitField1_ = to_bitField1_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.getDefaultInstance()) return this;
            if (other.hasAccountId()) {
              setAccountId(other.getAccountId());
            }
            if (!other.abilityUpgrades_.isEmpty()) {
              if (abilityUpgrades_.isEmpty()) {
                abilityUpgrades_ = other.abilityUpgrades_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureAbilityUpgradesIsMutable();
                abilityUpgrades_.addAll(other.abilityUpgrades_);
              }
              onChanged();
            }
            if (other.hasPlayerSlot()) {
              setPlayerSlot(other.getPlayerSlot());
            }
            if (equippedEconItemsBuilder_ == null) {
              if (!other.equippedEconItems_.isEmpty()) {
                if (equippedEconItems_.isEmpty()) {
                  equippedEconItems_ = other.equippedEconItems_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                } else {
                  ensureEquippedEconItemsIsMutable();
                  equippedEconItems_.addAll(other.equippedEconItems_);
                }
                onChanged();
              }
            } else {
              if (!other.equippedEconItems_.isEmpty()) {
                if (equippedEconItemsBuilder_.isEmpty()) {
                  equippedEconItemsBuilder_.dispose();
                  equippedEconItemsBuilder_ = null;
                  equippedEconItems_ = other.equippedEconItems_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                  equippedEconItemsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getEquippedEconItemsFieldBuilder() : null;
                } else {
                  equippedEconItemsBuilder_.addAllMessages(other.equippedEconItems_);
                }
              }
            }
            if (killsBuilder_ == null) {
              if (!other.kills_.isEmpty()) {
                if (kills_.isEmpty()) {
                  kills_ = other.kills_;
                  bitField0_ = (bitField0_ & ~0x00000010);
                } else {
                  ensureKillsIsMutable();
                  kills_.addAll(other.kills_);
                }
                onChanged();
              }
            } else {
              if (!other.kills_.isEmpty()) {
                if (killsBuilder_.isEmpty()) {
                  killsBuilder_.dispose();
                  killsBuilder_ = null;
                  kills_ = other.kills_;
                  bitField0_ = (bitField0_ & ~0x00000010);
                  killsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getKillsFieldBuilder() : null;
                } else {
                  killsBuilder_.addAllMessages(other.kills_);
                }
              }
            }
            if (itemsBuilder_ == null) {
              if (!other.items_.isEmpty()) {
                if (items_.isEmpty()) {
                  items_ = other.items_;
                  bitField0_ = (bitField0_ & ~0x00000020);
                } else {
                  ensureItemsIsMutable();
                  items_.addAll(other.items_);
                }
                onChanged();
              }
            } else {
              if (!other.items_.isEmpty()) {
                if (itemsBuilder_.isEmpty()) {
                  itemsBuilder_.dispose();
                  itemsBuilder_ = null;
                  items_ = other.items_;
                  bitField0_ = (bitField0_ & ~0x00000020);
                  itemsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getItemsFieldBuilder() : null;
                } else {
                  itemsBuilder_.addAllMessages(other.items_);
                }
              }
            }
            if (other.hasAvgKillsX16()) {
              setAvgKillsX16(other.getAvgKillsX16());
            }
            if (other.hasAvgDeathsX16()) {
              setAvgDeathsX16(other.getAvgDeathsX16());
            }
            if (other.hasAvgAssistsX16()) {
              setAvgAssistsX16(other.getAvgAssistsX16());
            }
            if (other.hasAvgGpmX16()) {
              setAvgGpmX16(other.getAvgGpmX16());
            }
            if (other.hasAvgXpmX16()) {
              setAvgXpmX16(other.getAvgXpmX16());
            }
            if (other.hasBestKillsX16()) {
              setBestKillsX16(other.getBestKillsX16());
            }
            if (other.hasBestAssistsX16()) {
              setBestAssistsX16(other.getBestAssistsX16());
            }
            if (other.hasBestGpmX16()) {
              setBestGpmX16(other.getBestGpmX16());
            }
            if (other.hasBestXpmX16()) {
              setBestXpmX16(other.getBestXpmX16());
            }
            if (other.hasWinStreak()) {
              setWinStreak(other.getWinStreak());
            }
            if (other.hasBestWinStreak()) {
              setBestWinStreak(other.getBestWinStreak());
            }
            if (other.hasFightScore()) {
              setFightScore(other.getFightScore());
            }
            if (other.hasFarmScore()) {
              setFarmScore(other.getFarmScore());
            }
            if (other.hasSupportScore()) {
              setSupportScore(other.getSupportScore());
            }
            if (other.hasPushScore()) {
              setPushScore(other.getPushScore());
            }
            if (!other.levelUpTimes_.isEmpty()) {
              if (levelUpTimes_.isEmpty()) {
                levelUpTimes_ = other.levelUpTimes_;
                bitField0_ = (bitField0_ & ~0x00200000);
              } else {
                ensureLevelUpTimesIsMutable();
                levelUpTimes_.addAll(other.levelUpTimes_);
              }
              onChanged();
            }
            if (!other.graphNetWorth_.isEmpty()) {
              if (graphNetWorth_.isEmpty()) {
                graphNetWorth_ = other.graphNetWorth_;
                bitField0_ = (bitField0_ & ~0x00400000);
              } else {
                ensureGraphNetWorthIsMutable();
                graphNetWorth_.addAll(other.graphNetWorth_);
              }
              onChanged();
            }
            if (inventorySnapshotBuilder_ == null) {
              if (!other.inventorySnapshot_.isEmpty()) {
                if (inventorySnapshot_.isEmpty()) {
                  inventorySnapshot_ = other.inventorySnapshot_;
                  bitField0_ = (bitField0_ & ~0x00800000);
                } else {
                  ensureInventorySnapshotIsMutable();
                  inventorySnapshot_.addAll(other.inventorySnapshot_);
                }
                onChanged();
              }
            } else {
              if (!other.inventorySnapshot_.isEmpty()) {
                if (inventorySnapshotBuilder_.isEmpty()) {
                  inventorySnapshotBuilder_.dispose();
                  inventorySnapshotBuilder_ = null;
                  inventorySnapshot_ = other.inventorySnapshot_;
                  bitField0_ = (bitField0_ & ~0x00800000);
                  inventorySnapshotBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getInventorySnapshotFieldBuilder() : null;
                } else {
                  inventorySnapshotBuilder_.addAllMessages(other.inventorySnapshot_);
                }
              }
            }
            if (other.hasAvgStatsCalibrated()) {
              setAvgStatsCalibrated(other.getAvgStatsCalibrated());
            }
            if (autoStyleCriteriaBuilder_ == null) {
              if (!other.autoStyleCriteria_.isEmpty()) {
                if (autoStyleCriteria_.isEmpty()) {
                  autoStyleCriteria_ = other.autoStyleCriteria_;
                  bitField0_ = (bitField0_ & ~0x02000000);
                } else {
                  ensureAutoStyleCriteriaIsMutable();
                  autoStyleCriteria_.addAll(other.autoStyleCriteria_);
                }
                onChanged();
              }
            } else {
              if (!other.autoStyleCriteria_.isEmpty()) {
                if (autoStyleCriteriaBuilder_.isEmpty()) {
                  autoStyleCriteriaBuilder_.dispose();
                  autoStyleCriteriaBuilder_ = null;
                  autoStyleCriteria_ = other.autoStyleCriteria_;
                  bitField0_ = (bitField0_ & ~0x02000000);
                  autoStyleCriteriaBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getAutoStyleCriteriaFieldBuilder() : null;
                } else {
                  autoStyleCriteriaBuilder_.addAllMessages(other.autoStyleCriteria_);
                }
              }
            }
            if (eventDataBuilder_ == null) {
              if (!other.eventData_.isEmpty()) {
                if (eventData_.isEmpty()) {
                  eventData_ = other.eventData_;
                  bitField0_ = (bitField0_ & ~0x04000000);
                } else {
                  ensureEventDataIsMutable();
                  eventData_.addAll(other.eventData_);
                }
                onChanged();
              }
            } else {
              if (!other.eventData_.isEmpty()) {
                if (eventDataBuilder_.isEmpty()) {
                  eventDataBuilder_.dispose();
                  eventDataBuilder_ = null;
                  eventData_ = other.eventData_;
                  bitField0_ = (bitField0_ & ~0x04000000);
                  eventDataBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getEventDataFieldBuilder() : null;
                } else {
                  eventDataBuilder_.addAllMessages(other.eventData_);
                }
              }
            }
            if (strangeGemProgressBuilder_ == null) {
              if (!other.strangeGemProgress_.isEmpty()) {
                if (strangeGemProgress_.isEmpty()) {
                  strangeGemProgress_ = other.strangeGemProgress_;
                  bitField0_ = (bitField0_ & ~0x08000000);
                } else {
                  ensureStrangeGemProgressIsMutable();
                  strangeGemProgress_.addAll(other.strangeGemProgress_);
                }
                onChanged();
              }
            } else {
              if (!other.strangeGemProgress_.isEmpty()) {
                if (strangeGemProgressBuilder_.isEmpty()) {
                  strangeGemProgressBuilder_.dispose();
                  strangeGemProgressBuilder_ = null;
                  strangeGemProgress_ = other.strangeGemProgress_;
                  bitField0_ = (bitField0_ & ~0x08000000);
                  strangeGemProgressBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getStrangeGemProgressFieldBuilder() : null;
                } else {
                  strangeGemProgressBuilder_.addAllMessages(other.strangeGemProgress_);
                }
              }
            }
            if (other.hasHeroXp()) {
              setHeroXp(other.getHeroXp());
            }
            if (other.hasCampsStacked()) {
              setCampsStacked(other.getCampsStacked());
            }
            if (victoryPredictionBuilder_ == null) {
              if (!other.victoryPrediction_.isEmpty()) {
                if (victoryPrediction_.isEmpty()) {
                  victoryPrediction_ = other.victoryPrediction_;
                  bitField0_ = (bitField0_ & ~0x40000000);
                } else {
                  ensureVictoryPredictionIsMutable();
                  victoryPrediction_.addAll(other.victoryPrediction_);
                }
                onChanged();
              }
            } else {
              if (!other.victoryPrediction_.isEmpty()) {
                if (victoryPredictionBuilder_.isEmpty()) {
                  victoryPredictionBuilder_.dispose();
                  victoryPredictionBuilder_ = null;
                  victoryPrediction_ = other.victoryPrediction_;
                  bitField0_ = (bitField0_ & ~0x40000000);
                  victoryPredictionBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getVictoryPredictionFieldBuilder() : null;
                } else {
                  victoryPredictionBuilder_.addAllMessages(other.victoryPrediction_);
                }
              }
            }
            if (other.hasLaneSelectionFlags()) {
              setLaneSelectionFlags(other.getLaneSelectionFlags());
            }
            if (other.hasRampages()) {
              setRampages(other.getRampages());
            }
            if (other.hasTripleKills()) {
              setTripleKills(other.getTripleKills());
            }
            if (other.hasAegisSnatched()) {
              setAegisSnatched(other.getAegisSnatched());
            }
            if (other.hasRapiersPurchased()) {
              setRapiersPurchased(other.getRapiersPurchased());
            }
            if (other.hasCouriersKilled()) {
              setCouriersKilled(other.getCouriersKilled());
            }
            if (other.hasNetWorthRank()) {
              setNetWorthRank(other.getNetWorthRank());
            }
            if (other.hasSupportGoldSpent()) {
              setSupportGoldSpent(other.getSupportGoldSpent());
            }
            if (other.hasObserverWardsPlaced()) {
              setObserverWardsPlaced(other.getObserverWardsPlaced());
            }
            if (other.hasSentryWardsPlaced()) {
              setSentryWardsPlaced(other.getSentryWardsPlaced());
            }
            if (other.hasWardsDewarded()) {
              setWardsDewarded(other.getWardsDewarded());
            }
            if (other.hasStunDuration()) {
              setStunDuration(other.getStunDuration());
            }
            if (other.hasRankMmrBoostType()) {
              setRankMmrBoostType(other.getRankMmrBoostType());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
          private int bitField1_;

          private int accountId_ ;
          /**
           * optional uint32 account_id = 1;
           */
          public boolean hasAccountId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 account_id = 1;
           */
          public int getAccountId() {
            return accountId_;
          }
          /**
           * optional uint32 account_id = 1;
           */
          public Builder setAccountId(int value) {
            bitField0_ |= 0x00000001;
            accountId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 account_id = 1;
           */
          public Builder clearAccountId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            accountId_ = 0;
            onChanged();
            return this;
          }

          private java.util.List abilityUpgrades_ = java.util.Collections.emptyList();
          private void ensureAbilityUpgradesIsMutable() {
            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
              abilityUpgrades_ = new java.util.ArrayList(abilityUpgrades_);
              bitField0_ |= 0x00000002;
             }
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public java.util.List
              getAbilityUpgradesList() {
            return java.util.Collections.unmodifiableList(abilityUpgrades_);
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public int getAbilityUpgradesCount() {
            return abilityUpgrades_.size();
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public int getAbilityUpgrades(int index) {
            return abilityUpgrades_.get(index);
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public Builder setAbilityUpgrades(
              int index, int value) {
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public Builder addAbilityUpgrades(int value) {
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public Builder addAllAbilityUpgrades(
              java.lang.Iterable values) {
            ensureAbilityUpgradesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, abilityUpgrades_);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public Builder clearAbilityUpgrades() {
            abilityUpgrades_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }

          private int playerSlot_ ;
          /**
           * optional uint32 player_slot = 3;
           */
          public boolean hasPlayerSlot() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 player_slot = 3;
           */
          public int getPlayerSlot() {
            return playerSlot_;
          }
          /**
           * optional uint32 player_slot = 3;
           */
          public Builder setPlayerSlot(int value) {
            bitField0_ |= 0x00000004;
            playerSlot_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 player_slot = 3;
           */
          public Builder clearPlayerSlot() {
            bitField0_ = (bitField0_ & ~0x00000004);
            playerSlot_ = 0;
            onChanged();
            return this;
          }

          private java.util.List equippedEconItems_ =
            java.util.Collections.emptyList();
          private void ensureEquippedEconItemsIsMutable() {
            if (!((bitField0_ & 0x00000008) == 0x00000008)) {
              equippedEconItems_ = new java.util.ArrayList(equippedEconItems_);
              bitField0_ |= 0x00000008;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder> equippedEconItemsBuilder_;

          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public java.util.List getEquippedEconItemsList() {
            if (equippedEconItemsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(equippedEconItems_);
            } else {
              return equippedEconItemsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public int getEquippedEconItemsCount() {
            if (equippedEconItemsBuilder_ == null) {
              return equippedEconItems_.size();
            } else {
              return equippedEconItemsBuilder_.getCount();
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem getEquippedEconItems(int index) {
            if (equippedEconItemsBuilder_ == null) {
              return equippedEconItems_.get(index);
            } else {
              return equippedEconItemsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder setEquippedEconItems(
              int index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem value) {
            if (equippedEconItemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.set(index, value);
              onChanged();
            } else {
              equippedEconItemsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder setEquippedEconItems(
              int index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder builderForValue) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.set(index, builderForValue.build());
              onChanged();
            } else {
              equippedEconItemsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addEquippedEconItems(skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem value) {
            if (equippedEconItemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.add(value);
              onChanged();
            } else {
              equippedEconItemsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addEquippedEconItems(
              int index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem value) {
            if (equippedEconItemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.add(index, value);
              onChanged();
            } else {
              equippedEconItemsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addEquippedEconItems(
              skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder builderForValue) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.add(builderForValue.build());
              onChanged();
            } else {
              equippedEconItemsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addEquippedEconItems(
              int index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder builderForValue) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.add(index, builderForValue.build());
              onChanged();
            } else {
              equippedEconItemsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addAllEquippedEconItems(
              java.lang.Iterable values) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, equippedEconItems_);
              onChanged();
            } else {
              equippedEconItemsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder clearEquippedEconItems() {
            if (equippedEconItemsBuilder_ == null) {
              equippedEconItems_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
              onChanged();
            } else {
              equippedEconItemsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder removeEquippedEconItems(int index) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.remove(index);
              onChanged();
            } else {
              equippedEconItemsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder getEquippedEconItemsBuilder(
              int index) {
            return getEquippedEconItemsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder getEquippedEconItemsOrBuilder(
              int index) {
            if (equippedEconItemsBuilder_ == null) {
              return equippedEconItems_.get(index);  } else {
              return equippedEconItemsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public java.util.List 
               getEquippedEconItemsOrBuilderList() {
            if (equippedEconItemsBuilder_ != null) {
              return equippedEconItemsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(equippedEconItems_);
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder addEquippedEconItemsBuilder() {
            return getEquippedEconItemsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.getDefaultInstance());
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder addEquippedEconItemsBuilder(
              int index) {
            return getEquippedEconItemsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.getDefaultInstance());
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public java.util.List 
               getEquippedEconItemsBuilderList() {
            return getEquippedEconItemsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder> 
              getEquippedEconItemsFieldBuilder() {
            if (equippedEconItemsBuilder_ == null) {
              equippedEconItemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder>(
                      equippedEconItems_,
                      ((bitField0_ & 0x00000008) == 0x00000008),
                      getParentForChildren(),
                      isClean());
              equippedEconItems_ = null;
            }
            return equippedEconItemsBuilder_;
          }

          private java.util.List kills_ =
            java.util.Collections.emptyList();
          private void ensureKillsIsMutable() {
            if (!((bitField0_ & 0x00000010) == 0x00000010)) {
              kills_ = new java.util.ArrayList(kills_);
              bitField0_ |= 0x00000010;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder> killsBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public java.util.List getKillsList() {
            if (killsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(kills_);
            } else {
              return killsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public int getKillsCount() {
            if (killsBuilder_ == null) {
              return kills_.size();
            } else {
              return killsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill getKills(int index) {
            if (killsBuilder_ == null) {
              return kills_.get(index);
            } else {
              return killsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder setKills(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill value) {
            if (killsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureKillsIsMutable();
              kills_.set(index, value);
              onChanged();
            } else {
              killsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder setKills(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder builderForValue) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              kills_.set(index, builderForValue.build());
              onChanged();
            } else {
              killsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addKills(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill value) {
            if (killsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureKillsIsMutable();
              kills_.add(value);
              onChanged();
            } else {
              killsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addKills(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill value) {
            if (killsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureKillsIsMutable();
              kills_.add(index, value);
              onChanged();
            } else {
              killsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addKills(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder builderForValue) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              kills_.add(builderForValue.build());
              onChanged();
            } else {
              killsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addKills(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder builderForValue) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              kills_.add(index, builderForValue.build());
              onChanged();
            } else {
              killsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addAllKills(
              java.lang.Iterable values) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, kills_);
              onChanged();
            } else {
              killsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder clearKills() {
            if (killsBuilder_ == null) {
              kills_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000010);
              onChanged();
            } else {
              killsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder removeKills(int index) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              kills_.remove(index);
              onChanged();
            } else {
              killsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder getKillsBuilder(
              int index) {
            return getKillsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder getKillsOrBuilder(
              int index) {
            if (killsBuilder_ == null) {
              return kills_.get(index);  } else {
              return killsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public java.util.List 
               getKillsOrBuilderList() {
            if (killsBuilder_ != null) {
              return killsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(kills_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder addKillsBuilder() {
            return getKillsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder addKillsBuilder(
              int index) {
            return getKillsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public java.util.List 
               getKillsBuilderList() {
            return getKillsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder> 
              getKillsFieldBuilder() {
            if (killsBuilder_ == null) {
              killsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder>(
                      kills_,
                      ((bitField0_ & 0x00000010) == 0x00000010),
                      getParentForChildren(),
                      isClean());
              kills_ = null;
            }
            return killsBuilder_;
          }

          private java.util.List items_ =
            java.util.Collections.emptyList();
          private void ensureItemsIsMutable() {
            if (!((bitField0_ & 0x00000020) == 0x00000020)) {
              items_ = new java.util.ArrayList(items_);
              bitField0_ |= 0x00000020;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder> itemsBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public java.util.List getItemsList() {
            if (itemsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(items_);
            } else {
              return itemsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public int getItemsCount() {
            if (itemsBuilder_ == null) {
              return items_.size();
            } else {
              return itemsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase getItems(int index) {
            if (itemsBuilder_ == null) {
              return items_.get(index);
            } else {
              return itemsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder setItems(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase value) {
            if (itemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureItemsIsMutable();
              items_.set(index, value);
              onChanged();
            } else {
              itemsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder setItems(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder builderForValue) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              items_.set(index, builderForValue.build());
              onChanged();
            } else {
              itemsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addItems(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase value) {
            if (itemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureItemsIsMutable();
              items_.add(value);
              onChanged();
            } else {
              itemsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addItems(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase value) {
            if (itemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureItemsIsMutable();
              items_.add(index, value);
              onChanged();
            } else {
              itemsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addItems(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder builderForValue) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              items_.add(builderForValue.build());
              onChanged();
            } else {
              itemsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addItems(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder builderForValue) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              items_.add(index, builderForValue.build());
              onChanged();
            } else {
              itemsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addAllItems(
              java.lang.Iterable values) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, items_);
              onChanged();
            } else {
              itemsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder clearItems() {
            if (itemsBuilder_ == null) {
              items_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000020);
              onChanged();
            } else {
              itemsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder removeItems(int index) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              items_.remove(index);
              onChanged();
            } else {
              itemsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder getItemsBuilder(
              int index) {
            return getItemsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder getItemsOrBuilder(
              int index) {
            if (itemsBuilder_ == null) {
              return items_.get(index);  } else {
              return itemsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public java.util.List 
               getItemsOrBuilderList() {
            if (itemsBuilder_ != null) {
              return itemsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(items_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder addItemsBuilder() {
            return getItemsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder addItemsBuilder(
              int index) {
            return getItemsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public java.util.List 
               getItemsBuilderList() {
            return getItemsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder> 
              getItemsFieldBuilder() {
            if (itemsBuilder_ == null) {
              itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder>(
                      items_,
                      ((bitField0_ & 0x00000020) == 0x00000020),
                      getParentForChildren(),
                      isClean());
              items_ = null;
            }
            return itemsBuilder_;
          }

          private int avgKillsX16_ ;
          /**
           * optional uint32 avg_kills_x16 = 7;
           */
          public boolean hasAvgKillsX16() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint32 avg_kills_x16 = 7;
           */
          public int getAvgKillsX16() {
            return avgKillsX16_;
          }
          /**
           * optional uint32 avg_kills_x16 = 7;
           */
          public Builder setAvgKillsX16(int value) {
            bitField0_ |= 0x00000040;
            avgKillsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_kills_x16 = 7;
           */
          public Builder clearAvgKillsX16() {
            bitField0_ = (bitField0_ & ~0x00000040);
            avgKillsX16_ = 0;
            onChanged();
            return this;
          }

          private int avgDeathsX16_ ;
          /**
           * optional uint32 avg_deaths_x16 = 8;
           */
          public boolean hasAvgDeathsX16() {
            return ((bitField0_ & 0x00000080) == 0x00000080);
          }
          /**
           * optional uint32 avg_deaths_x16 = 8;
           */
          public int getAvgDeathsX16() {
            return avgDeathsX16_;
          }
          /**
           * optional uint32 avg_deaths_x16 = 8;
           */
          public Builder setAvgDeathsX16(int value) {
            bitField0_ |= 0x00000080;
            avgDeathsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_deaths_x16 = 8;
           */
          public Builder clearAvgDeathsX16() {
            bitField0_ = (bitField0_ & ~0x00000080);
            avgDeathsX16_ = 0;
            onChanged();
            return this;
          }

          private int avgAssistsX16_ ;
          /**
           * optional uint32 avg_assists_x16 = 9;
           */
          public boolean hasAvgAssistsX16() {
            return ((bitField0_ & 0x00000100) == 0x00000100);
          }
          /**
           * optional uint32 avg_assists_x16 = 9;
           */
          public int getAvgAssistsX16() {
            return avgAssistsX16_;
          }
          /**
           * optional uint32 avg_assists_x16 = 9;
           */
          public Builder setAvgAssistsX16(int value) {
            bitField0_ |= 0x00000100;
            avgAssistsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_assists_x16 = 9;
           */
          public Builder clearAvgAssistsX16() {
            bitField0_ = (bitField0_ & ~0x00000100);
            avgAssistsX16_ = 0;
            onChanged();
            return this;
          }

          private int avgGpmX16_ ;
          /**
           * optional uint32 avg_gpm_x16 = 10;
           */
          public boolean hasAvgGpmX16() {
            return ((bitField0_ & 0x00000200) == 0x00000200);
          }
          /**
           * optional uint32 avg_gpm_x16 = 10;
           */
          public int getAvgGpmX16() {
            return avgGpmX16_;
          }
          /**
           * optional uint32 avg_gpm_x16 = 10;
           */
          public Builder setAvgGpmX16(int value) {
            bitField0_ |= 0x00000200;
            avgGpmX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_gpm_x16 = 10;
           */
          public Builder clearAvgGpmX16() {
            bitField0_ = (bitField0_ & ~0x00000200);
            avgGpmX16_ = 0;
            onChanged();
            return this;
          }

          private int avgXpmX16_ ;
          /**
           * optional uint32 avg_xpm_x16 = 11;
           */
          public boolean hasAvgXpmX16() {
            return ((bitField0_ & 0x00000400) == 0x00000400);
          }
          /**
           * optional uint32 avg_xpm_x16 = 11;
           */
          public int getAvgXpmX16() {
            return avgXpmX16_;
          }
          /**
           * optional uint32 avg_xpm_x16 = 11;
           */
          public Builder setAvgXpmX16(int value) {
            bitField0_ |= 0x00000400;
            avgXpmX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_xpm_x16 = 11;
           */
          public Builder clearAvgXpmX16() {
            bitField0_ = (bitField0_ & ~0x00000400);
            avgXpmX16_ = 0;
            onChanged();
            return this;
          }

          private int bestKillsX16_ ;
          /**
           * optional uint32 best_kills_x16 = 12;
           */
          public boolean hasBestKillsX16() {
            return ((bitField0_ & 0x00000800) == 0x00000800);
          }
          /**
           * optional uint32 best_kills_x16 = 12;
           */
          public int getBestKillsX16() {
            return bestKillsX16_;
          }
          /**
           * optional uint32 best_kills_x16 = 12;
           */
          public Builder setBestKillsX16(int value) {
            bitField0_ |= 0x00000800;
            bestKillsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_kills_x16 = 12;
           */
          public Builder clearBestKillsX16() {
            bitField0_ = (bitField0_ & ~0x00000800);
            bestKillsX16_ = 0;
            onChanged();
            return this;
          }

          private int bestAssistsX16_ ;
          /**
           * optional uint32 best_assists_x16 = 13;
           */
          public boolean hasBestAssistsX16() {
            return ((bitField0_ & 0x00001000) == 0x00001000);
          }
          /**
           * optional uint32 best_assists_x16 = 13;
           */
          public int getBestAssistsX16() {
            return bestAssistsX16_;
          }
          /**
           * optional uint32 best_assists_x16 = 13;
           */
          public Builder setBestAssistsX16(int value) {
            bitField0_ |= 0x00001000;
            bestAssistsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_assists_x16 = 13;
           */
          public Builder clearBestAssistsX16() {
            bitField0_ = (bitField0_ & ~0x00001000);
            bestAssistsX16_ = 0;
            onChanged();
            return this;
          }

          private int bestGpmX16_ ;
          /**
           * optional uint32 best_gpm_x16 = 14;
           */
          public boolean hasBestGpmX16() {
            return ((bitField0_ & 0x00002000) == 0x00002000);
          }
          /**
           * optional uint32 best_gpm_x16 = 14;
           */
          public int getBestGpmX16() {
            return bestGpmX16_;
          }
          /**
           * optional uint32 best_gpm_x16 = 14;
           */
          public Builder setBestGpmX16(int value) {
            bitField0_ |= 0x00002000;
            bestGpmX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_gpm_x16 = 14;
           */
          public Builder clearBestGpmX16() {
            bitField0_ = (bitField0_ & ~0x00002000);
            bestGpmX16_ = 0;
            onChanged();
            return this;
          }

          private int bestXpmX16_ ;
          /**
           * optional uint32 best_xpm_x16 = 15;
           */
          public boolean hasBestXpmX16() {
            return ((bitField0_ & 0x00004000) == 0x00004000);
          }
          /**
           * optional uint32 best_xpm_x16 = 15;
           */
          public int getBestXpmX16() {
            return bestXpmX16_;
          }
          /**
           * optional uint32 best_xpm_x16 = 15;
           */
          public Builder setBestXpmX16(int value) {
            bitField0_ |= 0x00004000;
            bestXpmX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_xpm_x16 = 15;
           */
          public Builder clearBestXpmX16() {
            bitField0_ = (bitField0_ & ~0x00004000);
            bestXpmX16_ = 0;
            onChanged();
            return this;
          }

          private int winStreak_ ;
          /**
           * optional uint32 win_streak = 16;
           */
          public boolean hasWinStreak() {
            return ((bitField0_ & 0x00008000) == 0x00008000);
          }
          /**
           * optional uint32 win_streak = 16;
           */
          public int getWinStreak() {
            return winStreak_;
          }
          /**
           * optional uint32 win_streak = 16;
           */
          public Builder setWinStreak(int value) {
            bitField0_ |= 0x00008000;
            winStreak_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 win_streak = 16;
           */
          public Builder clearWinStreak() {
            bitField0_ = (bitField0_ & ~0x00008000);
            winStreak_ = 0;
            onChanged();
            return this;
          }

          private int bestWinStreak_ ;
          /**
           * optional uint32 best_win_streak = 17;
           */
          public boolean hasBestWinStreak() {
            return ((bitField0_ & 0x00010000) == 0x00010000);
          }
          /**
           * optional uint32 best_win_streak = 17;
           */
          public int getBestWinStreak() {
            return bestWinStreak_;
          }
          /**
           * optional uint32 best_win_streak = 17;
           */
          public Builder setBestWinStreak(int value) {
            bitField0_ |= 0x00010000;
            bestWinStreak_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_win_streak = 17;
           */
          public Builder clearBestWinStreak() {
            bitField0_ = (bitField0_ & ~0x00010000);
            bestWinStreak_ = 0;
            onChanged();
            return this;
          }

          private float fightScore_ ;
          /**
           * optional float fight_score = 18;
           */
          public boolean hasFightScore() {
            return ((bitField0_ & 0x00020000) == 0x00020000);
          }
          /**
           * optional float fight_score = 18;
           */
          public float getFightScore() {
            return fightScore_;
          }
          /**
           * optional float fight_score = 18;
           */
          public Builder setFightScore(float value) {
            bitField0_ |= 0x00020000;
            fightScore_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float fight_score = 18;
           */
          public Builder clearFightScore() {
            bitField0_ = (bitField0_ & ~0x00020000);
            fightScore_ = 0F;
            onChanged();
            return this;
          }

          private float farmScore_ ;
          /**
           * optional float farm_score = 19;
           */
          public boolean hasFarmScore() {
            return ((bitField0_ & 0x00040000) == 0x00040000);
          }
          /**
           * optional float farm_score = 19;
           */
          public float getFarmScore() {
            return farmScore_;
          }
          /**
           * optional float farm_score = 19;
           */
          public Builder setFarmScore(float value) {
            bitField0_ |= 0x00040000;
            farmScore_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float farm_score = 19;
           */
          public Builder clearFarmScore() {
            bitField0_ = (bitField0_ & ~0x00040000);
            farmScore_ = 0F;
            onChanged();
            return this;
          }

          private float supportScore_ ;
          /**
           * optional float support_score = 20;
           */
          public boolean hasSupportScore() {
            return ((bitField0_ & 0x00080000) == 0x00080000);
          }
          /**
           * optional float support_score = 20;
           */
          public float getSupportScore() {
            return supportScore_;
          }
          /**
           * optional float support_score = 20;
           */
          public Builder setSupportScore(float value) {
            bitField0_ |= 0x00080000;
            supportScore_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float support_score = 20;
           */
          public Builder clearSupportScore() {
            bitField0_ = (bitField0_ & ~0x00080000);
            supportScore_ = 0F;
            onChanged();
            return this;
          }

          private float pushScore_ ;
          /**
           * optional float push_score = 21;
           */
          public boolean hasPushScore() {
            return ((bitField0_ & 0x00100000) == 0x00100000);
          }
          /**
           * optional float push_score = 21;
           */
          public float getPushScore() {
            return pushScore_;
          }
          /**
           * optional float push_score = 21;
           */
          public Builder setPushScore(float value) {
            bitField0_ |= 0x00100000;
            pushScore_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float push_score = 21;
           */
          public Builder clearPushScore() {
            bitField0_ = (bitField0_ & ~0x00100000);
            pushScore_ = 0F;
            onChanged();
            return this;
          }

          private java.util.List levelUpTimes_ = java.util.Collections.emptyList();
          private void ensureLevelUpTimesIsMutable() {
            if (!((bitField0_ & 0x00200000) == 0x00200000)) {
              levelUpTimes_ = new java.util.ArrayList(levelUpTimes_);
              bitField0_ |= 0x00200000;
             }
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public java.util.List
              getLevelUpTimesList() {
            return java.util.Collections.unmodifiableList(levelUpTimes_);
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public int getLevelUpTimesCount() {
            return levelUpTimes_.size();
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public int getLevelUpTimes(int index) {
            return levelUpTimes_.get(index);
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public Builder setLevelUpTimes(
              int index, int value) {
            ensureLevelUpTimesIsMutable();
            levelUpTimes_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public Builder addLevelUpTimes(int value) {
            ensureLevelUpTimesIsMutable();
            levelUpTimes_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public Builder addAllLevelUpTimes(
              java.lang.Iterable values) {
            ensureLevelUpTimesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, levelUpTimes_);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public Builder clearLevelUpTimes() {
            levelUpTimes_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00200000);
            onChanged();
            return this;
          }

          private java.util.List graphNetWorth_ = java.util.Collections.emptyList();
          private void ensureGraphNetWorthIsMutable() {
            if (!((bitField0_ & 0x00400000) == 0x00400000)) {
              graphNetWorth_ = new java.util.ArrayList(graphNetWorth_);
              bitField0_ |= 0x00400000;
             }
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public java.util.List
              getGraphNetWorthList() {
            return java.util.Collections.unmodifiableList(graphNetWorth_);
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public int getGraphNetWorthCount() {
            return graphNetWorth_.size();
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public float getGraphNetWorth(int index) {
            return graphNetWorth_.get(index);
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public Builder setGraphNetWorth(
              int index, float value) {
            ensureGraphNetWorthIsMutable();
            graphNetWorth_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public Builder addGraphNetWorth(float value) {
            ensureGraphNetWorthIsMutable();
            graphNetWorth_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public Builder addAllGraphNetWorth(
              java.lang.Iterable values) {
            ensureGraphNetWorthIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphNetWorth_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public Builder clearGraphNetWorth() {
            graphNetWorth_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00400000);
            onChanged();
            return this;
          }

          private java.util.List inventorySnapshot_ =
            java.util.Collections.emptyList();
          private void ensureInventorySnapshotIsMutable() {
            if (!((bitField0_ & 0x00800000) == 0x00800000)) {
              inventorySnapshot_ = new java.util.ArrayList(inventorySnapshot_);
              bitField0_ |= 0x00800000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder> inventorySnapshotBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public java.util.List getInventorySnapshotList() {
            if (inventorySnapshotBuilder_ == null) {
              return java.util.Collections.unmodifiableList(inventorySnapshot_);
            } else {
              return inventorySnapshotBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public int getInventorySnapshotCount() {
            if (inventorySnapshotBuilder_ == null) {
              return inventorySnapshot_.size();
            } else {
              return inventorySnapshotBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot getInventorySnapshot(int index) {
            if (inventorySnapshotBuilder_ == null) {
              return inventorySnapshot_.get(index);
            } else {
              return inventorySnapshotBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder setInventorySnapshot(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot value) {
            if (inventorySnapshotBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.set(index, value);
              onChanged();
            } else {
              inventorySnapshotBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder setInventorySnapshot(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder builderForValue) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.set(index, builderForValue.build());
              onChanged();
            } else {
              inventorySnapshotBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addInventorySnapshot(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot value) {
            if (inventorySnapshotBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.add(value);
              onChanged();
            } else {
              inventorySnapshotBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addInventorySnapshot(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot value) {
            if (inventorySnapshotBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.add(index, value);
              onChanged();
            } else {
              inventorySnapshotBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addInventorySnapshot(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder builderForValue) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.add(builderForValue.build());
              onChanged();
            } else {
              inventorySnapshotBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addInventorySnapshot(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder builderForValue) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.add(index, builderForValue.build());
              onChanged();
            } else {
              inventorySnapshotBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addAllInventorySnapshot(
              java.lang.Iterable values) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, inventorySnapshot_);
              onChanged();
            } else {
              inventorySnapshotBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder clearInventorySnapshot() {
            if (inventorySnapshotBuilder_ == null) {
              inventorySnapshot_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00800000);
              onChanged();
            } else {
              inventorySnapshotBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder removeInventorySnapshot(int index) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.remove(index);
              onChanged();
            } else {
              inventorySnapshotBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder getInventorySnapshotBuilder(
              int index) {
            return getInventorySnapshotFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder getInventorySnapshotOrBuilder(
              int index) {
            if (inventorySnapshotBuilder_ == null) {
              return inventorySnapshot_.get(index);  } else {
              return inventorySnapshotBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public java.util.List 
               getInventorySnapshotOrBuilderList() {
            if (inventorySnapshotBuilder_ != null) {
              return inventorySnapshotBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(inventorySnapshot_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder addInventorySnapshotBuilder() {
            return getInventorySnapshotFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder addInventorySnapshotBuilder(
              int index) {
            return getInventorySnapshotFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public java.util.List 
               getInventorySnapshotBuilderList() {
            return getInventorySnapshotFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder> 
              getInventorySnapshotFieldBuilder() {
            if (inventorySnapshotBuilder_ == null) {
              inventorySnapshotBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder>(
                      inventorySnapshot_,
                      ((bitField0_ & 0x00800000) == 0x00800000),
                      getParentForChildren(),
                      isClean());
              inventorySnapshot_ = null;
            }
            return inventorySnapshotBuilder_;
          }

          private boolean avgStatsCalibrated_ ;
          /**
           * optional bool avg_stats_calibrated = 25;
           */
          public boolean hasAvgStatsCalibrated() {
            return ((bitField0_ & 0x01000000) == 0x01000000);
          }
          /**
           * optional bool avg_stats_calibrated = 25;
           */
          public boolean getAvgStatsCalibrated() {
            return avgStatsCalibrated_;
          }
          /**
           * optional bool avg_stats_calibrated = 25;
           */
          public Builder setAvgStatsCalibrated(boolean value) {
            bitField0_ |= 0x01000000;
            avgStatsCalibrated_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool avg_stats_calibrated = 25;
           */
          public Builder clearAvgStatsCalibrated() {
            bitField0_ = (bitField0_ & ~0x01000000);
            avgStatsCalibrated_ = false;
            onChanged();
            return this;
          }

          private java.util.List autoStyleCriteria_ =
            java.util.Collections.emptyList();
          private void ensureAutoStyleCriteriaIsMutable() {
            if (!((bitField0_ & 0x02000000) == 0x02000000)) {
              autoStyleCriteria_ = new java.util.ArrayList(autoStyleCriteria_);
              bitField0_ |= 0x02000000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder> autoStyleCriteriaBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public java.util.List getAutoStyleCriteriaList() {
            if (autoStyleCriteriaBuilder_ == null) {
              return java.util.Collections.unmodifiableList(autoStyleCriteria_);
            } else {
              return autoStyleCriteriaBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public int getAutoStyleCriteriaCount() {
            if (autoStyleCriteriaBuilder_ == null) {
              return autoStyleCriteria_.size();
            } else {
              return autoStyleCriteriaBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria getAutoStyleCriteria(int index) {
            if (autoStyleCriteriaBuilder_ == null) {
              return autoStyleCriteria_.get(index);
            } else {
              return autoStyleCriteriaBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder setAutoStyleCriteria(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria value) {
            if (autoStyleCriteriaBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.set(index, value);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder setAutoStyleCriteria(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder builderForValue) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.set(index, builderForValue.build());
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAutoStyleCriteria(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria value) {
            if (autoStyleCriteriaBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.add(value);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAutoStyleCriteria(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria value) {
            if (autoStyleCriteriaBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.add(index, value);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAutoStyleCriteria(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder builderForValue) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.add(builderForValue.build());
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAutoStyleCriteria(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder builderForValue) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.add(index, builderForValue.build());
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAllAutoStyleCriteria(
              java.lang.Iterable values) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, autoStyleCriteria_);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder clearAutoStyleCriteria() {
            if (autoStyleCriteriaBuilder_ == null) {
              autoStyleCriteria_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x02000000);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder removeAutoStyleCriteria(int index) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.remove(index);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder getAutoStyleCriteriaBuilder(
              int index) {
            return getAutoStyleCriteriaFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder getAutoStyleCriteriaOrBuilder(
              int index) {
            if (autoStyleCriteriaBuilder_ == null) {
              return autoStyleCriteria_.get(index);  } else {
              return autoStyleCriteriaBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public java.util.List 
               getAutoStyleCriteriaOrBuilderList() {
            if (autoStyleCriteriaBuilder_ != null) {
              return autoStyleCriteriaBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(autoStyleCriteria_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder addAutoStyleCriteriaBuilder() {
            return getAutoStyleCriteriaFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder addAutoStyleCriteriaBuilder(
              int index) {
            return getAutoStyleCriteriaFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public java.util.List 
               getAutoStyleCriteriaBuilderList() {
            return getAutoStyleCriteriaFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder> 
              getAutoStyleCriteriaFieldBuilder() {
            if (autoStyleCriteriaBuilder_ == null) {
              autoStyleCriteriaBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder>(
                      autoStyleCriteria_,
                      ((bitField0_ & 0x02000000) == 0x02000000),
                      getParentForChildren(),
                      isClean());
              autoStyleCriteria_ = null;
            }
            return autoStyleCriteriaBuilder_;
          }

          private java.util.List eventData_ =
            java.util.Collections.emptyList();
          private void ensureEventDataIsMutable() {
            if (!((bitField0_ & 0x04000000) == 0x04000000)) {
              eventData_ = new java.util.ArrayList(eventData_);
              bitField0_ |= 0x04000000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder> eventDataBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public java.util.List getEventDataList() {
            if (eventDataBuilder_ == null) {
              return java.util.Collections.unmodifiableList(eventData_);
            } else {
              return eventDataBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public int getEventDataCount() {
            if (eventDataBuilder_ == null) {
              return eventData_.size();
            } else {
              return eventDataBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData getEventData(int index) {
            if (eventDataBuilder_ == null) {
              return eventData_.get(index);
            } else {
              return eventDataBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder setEventData(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData value) {
            if (eventDataBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEventDataIsMutable();
              eventData_.set(index, value);
              onChanged();
            } else {
              eventDataBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder setEventData(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder builderForValue) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              eventData_.set(index, builderForValue.build());
              onChanged();
            } else {
              eventDataBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addEventData(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData value) {
            if (eventDataBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEventDataIsMutable();
              eventData_.add(value);
              onChanged();
            } else {
              eventDataBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addEventData(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData value) {
            if (eventDataBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEventDataIsMutable();
              eventData_.add(index, value);
              onChanged();
            } else {
              eventDataBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addEventData(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder builderForValue) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              eventData_.add(builderForValue.build());
              onChanged();
            } else {
              eventDataBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addEventData(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder builderForValue) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              eventData_.add(index, builderForValue.build());
              onChanged();
            } else {
              eventDataBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addAllEventData(
              java.lang.Iterable values) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, eventData_);
              onChanged();
            } else {
              eventDataBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder clearEventData() {
            if (eventDataBuilder_ == null) {
              eventData_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x04000000);
              onChanged();
            } else {
              eventDataBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder removeEventData(int index) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              eventData_.remove(index);
              onChanged();
            } else {
              eventDataBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder getEventDataBuilder(
              int index) {
            return getEventDataFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder getEventDataOrBuilder(
              int index) {
            if (eventDataBuilder_ == null) {
              return eventData_.get(index);  } else {
              return eventDataBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public java.util.List 
               getEventDataOrBuilderList() {
            if (eventDataBuilder_ != null) {
              return eventDataBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(eventData_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder addEventDataBuilder() {
            return getEventDataFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder addEventDataBuilder(
              int index) {
            return getEventDataFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public java.util.List 
               getEventDataBuilderList() {
            return getEventDataFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder> 
              getEventDataFieldBuilder() {
            if (eventDataBuilder_ == null) {
              eventDataBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder>(
                      eventData_,
                      ((bitField0_ & 0x04000000) == 0x04000000),
                      getParentForChildren(),
                      isClean());
              eventData_ = null;
            }
            return eventDataBuilder_;
          }

          private java.util.List strangeGemProgress_ =
            java.util.Collections.emptyList();
          private void ensureStrangeGemProgressIsMutable() {
            if (!((bitField0_ & 0x08000000) == 0x08000000)) {
              strangeGemProgress_ = new java.util.ArrayList(strangeGemProgress_);
              bitField0_ |= 0x08000000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder> strangeGemProgressBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public java.util.List getStrangeGemProgressList() {
            if (strangeGemProgressBuilder_ == null) {
              return java.util.Collections.unmodifiableList(strangeGemProgress_);
            } else {
              return strangeGemProgressBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public int getStrangeGemProgressCount() {
            if (strangeGemProgressBuilder_ == null) {
              return strangeGemProgress_.size();
            } else {
              return strangeGemProgressBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress getStrangeGemProgress(int index) {
            if (strangeGemProgressBuilder_ == null) {
              return strangeGemProgress_.get(index);
            } else {
              return strangeGemProgressBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder setStrangeGemProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress value) {
            if (strangeGemProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.set(index, value);
              onChanged();
            } else {
              strangeGemProgressBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder setStrangeGemProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder builderForValue) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.set(index, builderForValue.build());
              onChanged();
            } else {
              strangeGemProgressBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addStrangeGemProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress value) {
            if (strangeGemProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.add(value);
              onChanged();
            } else {
              strangeGemProgressBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addStrangeGemProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress value) {
            if (strangeGemProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.add(index, value);
              onChanged();
            } else {
              strangeGemProgressBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addStrangeGemProgress(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder builderForValue) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.add(builderForValue.build());
              onChanged();
            } else {
              strangeGemProgressBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addStrangeGemProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder builderForValue) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.add(index, builderForValue.build());
              onChanged();
            } else {
              strangeGemProgressBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addAllStrangeGemProgress(
              java.lang.Iterable values) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, strangeGemProgress_);
              onChanged();
            } else {
              strangeGemProgressBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder clearStrangeGemProgress() {
            if (strangeGemProgressBuilder_ == null) {
              strangeGemProgress_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x08000000);
              onChanged();
            } else {
              strangeGemProgressBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder removeStrangeGemProgress(int index) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.remove(index);
              onChanged();
            } else {
              strangeGemProgressBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder getStrangeGemProgressBuilder(
              int index) {
            return getStrangeGemProgressFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder getStrangeGemProgressOrBuilder(
              int index) {
            if (strangeGemProgressBuilder_ == null) {
              return strangeGemProgress_.get(index);  } else {
              return strangeGemProgressBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public java.util.List 
               getStrangeGemProgressOrBuilderList() {
            if (strangeGemProgressBuilder_ != null) {
              return strangeGemProgressBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(strangeGemProgress_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder addStrangeGemProgressBuilder() {
            return getStrangeGemProgressFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder addStrangeGemProgressBuilder(
              int index) {
            return getStrangeGemProgressFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public java.util.List 
               getStrangeGemProgressBuilderList() {
            return getStrangeGemProgressFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder> 
              getStrangeGemProgressFieldBuilder() {
            if (strangeGemProgressBuilder_ == null) {
              strangeGemProgressBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder>(
                      strangeGemProgress_,
                      ((bitField0_ & 0x08000000) == 0x08000000),
                      getParentForChildren(),
                      isClean());
              strangeGemProgress_ = null;
            }
            return strangeGemProgressBuilder_;
          }

          private int heroXp_ ;
          /**
           * optional uint32 hero_xp = 31;
           */
          public boolean hasHeroXp() {
            return ((bitField0_ & 0x10000000) == 0x10000000);
          }
          /**
           * optional uint32 hero_xp = 31;
           */
          public int getHeroXp() {
            return heroXp_;
          }
          /**
           * optional uint32 hero_xp = 31;
           */
          public Builder setHeroXp(int value) {
            bitField0_ |= 0x10000000;
            heroXp_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 hero_xp = 31;
           */
          public Builder clearHeroXp() {
            bitField0_ = (bitField0_ & ~0x10000000);
            heroXp_ = 0;
            onChanged();
            return this;
          }

          private int campsStacked_ ;
          /**
           * optional uint32 camps_stacked = 32;
           */
          public boolean hasCampsStacked() {
            return ((bitField0_ & 0x20000000) == 0x20000000);
          }
          /**
           * optional uint32 camps_stacked = 32;
           */
          public int getCampsStacked() {
            return campsStacked_;
          }
          /**
           * optional uint32 camps_stacked = 32;
           */
          public Builder setCampsStacked(int value) {
            bitField0_ |= 0x20000000;
            campsStacked_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 camps_stacked = 32;
           */
          public Builder clearCampsStacked() {
            bitField0_ = (bitField0_ & ~0x20000000);
            campsStacked_ = 0;
            onChanged();
            return this;
          }

          private java.util.List victoryPrediction_ =
            java.util.Collections.emptyList();
          private void ensureVictoryPredictionIsMutable() {
            if (!((bitField0_ & 0x40000000) == 0x40000000)) {
              victoryPrediction_ = new java.util.ArrayList(victoryPrediction_);
              bitField0_ |= 0x40000000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder> victoryPredictionBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public java.util.List getVictoryPredictionList() {
            if (victoryPredictionBuilder_ == null) {
              return java.util.Collections.unmodifiableList(victoryPrediction_);
            } else {
              return victoryPredictionBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public int getVictoryPredictionCount() {
            if (victoryPredictionBuilder_ == null) {
              return victoryPrediction_.size();
            } else {
              return victoryPredictionBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction getVictoryPrediction(int index) {
            if (victoryPredictionBuilder_ == null) {
              return victoryPrediction_.get(index);
            } else {
              return victoryPredictionBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder setVictoryPrediction(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction value) {
            if (victoryPredictionBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.set(index, value);
              onChanged();
            } else {
              victoryPredictionBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder setVictoryPrediction(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder builderForValue) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.set(index, builderForValue.build());
              onChanged();
            } else {
              victoryPredictionBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addVictoryPrediction(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction value) {
            if (victoryPredictionBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.add(value);
              onChanged();
            } else {
              victoryPredictionBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addVictoryPrediction(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction value) {
            if (victoryPredictionBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.add(index, value);
              onChanged();
            } else {
              victoryPredictionBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addVictoryPrediction(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder builderForValue) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.add(builderForValue.build());
              onChanged();
            } else {
              victoryPredictionBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addVictoryPrediction(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder builderForValue) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.add(index, builderForValue.build());
              onChanged();
            } else {
              victoryPredictionBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addAllVictoryPrediction(
              java.lang.Iterable values) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, victoryPrediction_);
              onChanged();
            } else {
              victoryPredictionBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder clearVictoryPrediction() {
            if (victoryPredictionBuilder_ == null) {
              victoryPrediction_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x40000000);
              onChanged();
            } else {
              victoryPredictionBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder removeVictoryPrediction(int index) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.remove(index);
              onChanged();
            } else {
              victoryPredictionBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder getVictoryPredictionBuilder(
              int index) {
            return getVictoryPredictionFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder getVictoryPredictionOrBuilder(
              int index) {
            if (victoryPredictionBuilder_ == null) {
              return victoryPrediction_.get(index);  } else {
              return victoryPredictionBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public java.util.List 
               getVictoryPredictionOrBuilderList() {
            if (victoryPredictionBuilder_ != null) {
              return victoryPredictionBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(victoryPrediction_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder addVictoryPredictionBuilder() {
            return getVictoryPredictionFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder addVictoryPredictionBuilder(
              int index) {
            return getVictoryPredictionFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public java.util.List 
               getVictoryPredictionBuilderList() {
            return getVictoryPredictionFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder> 
              getVictoryPredictionFieldBuilder() {
            if (victoryPredictionBuilder_ == null) {
              victoryPredictionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder>(
                      victoryPrediction_,
                      ((bitField0_ & 0x40000000) == 0x40000000),
                      getParentForChildren(),
                      isClean());
              victoryPrediction_ = null;
            }
            return victoryPredictionBuilder_;
          }

          private int laneSelectionFlags_ ;
          /**
           * optional uint32 lane_selection_flags = 34;
           */
          public boolean hasLaneSelectionFlags() {
            return ((bitField0_ & 0x80000000) == 0x80000000);
          }
          /**
           * optional uint32 lane_selection_flags = 34;
           */
          public int getLaneSelectionFlags() {
            return laneSelectionFlags_;
          }
          /**
           * optional uint32 lane_selection_flags = 34;
           */
          public Builder setLaneSelectionFlags(int value) {
            bitField0_ |= 0x80000000;
            laneSelectionFlags_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 lane_selection_flags = 34;
           */
          public Builder clearLaneSelectionFlags() {
            bitField0_ = (bitField0_ & ~0x80000000);
            laneSelectionFlags_ = 0;
            onChanged();
            return this;
          }

          private int rampages_ ;
          /**
           * optional uint32 rampages = 35;
           */
          public boolean hasRampages() {
            return ((bitField1_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 rampages = 35;
           */
          public int getRampages() {
            return rampages_;
          }
          /**
           * optional uint32 rampages = 35;
           */
          public Builder setRampages(int value) {
            bitField1_ |= 0x00000001;
            rampages_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 rampages = 35;
           */
          public Builder clearRampages() {
            bitField1_ = (bitField1_ & ~0x00000001);
            rampages_ = 0;
            onChanged();
            return this;
          }

          private int tripleKills_ ;
          /**
           * optional uint32 triple_kills = 36;
           */
          public boolean hasTripleKills() {
            return ((bitField1_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 triple_kills = 36;
           */
          public int getTripleKills() {
            return tripleKills_;
          }
          /**
           * optional uint32 triple_kills = 36;
           */
          public Builder setTripleKills(int value) {
            bitField1_ |= 0x00000002;
            tripleKills_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 triple_kills = 36;
           */
          public Builder clearTripleKills() {
            bitField1_ = (bitField1_ & ~0x00000002);
            tripleKills_ = 0;
            onChanged();
            return this;
          }

          private int aegisSnatched_ ;
          /**
           * optional uint32 aegis_snatched = 37;
           */
          public boolean hasAegisSnatched() {
            return ((bitField1_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 aegis_snatched = 37;
           */
          public int getAegisSnatched() {
            return aegisSnatched_;
          }
          /**
           * optional uint32 aegis_snatched = 37;
           */
          public Builder setAegisSnatched(int value) {
            bitField1_ |= 0x00000004;
            aegisSnatched_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 aegis_snatched = 37;
           */
          public Builder clearAegisSnatched() {
            bitField1_ = (bitField1_ & ~0x00000004);
            aegisSnatched_ = 0;
            onChanged();
            return this;
          }

          private int rapiersPurchased_ ;
          /**
           * optional uint32 rapiers_purchased = 38;
           */
          public boolean hasRapiersPurchased() {
            return ((bitField1_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 rapiers_purchased = 38;
           */
          public int getRapiersPurchased() {
            return rapiersPurchased_;
          }
          /**
           * optional uint32 rapiers_purchased = 38;
           */
          public Builder setRapiersPurchased(int value) {
            bitField1_ |= 0x00000008;
            rapiersPurchased_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 rapiers_purchased = 38;
           */
          public Builder clearRapiersPurchased() {
            bitField1_ = (bitField1_ & ~0x00000008);
            rapiersPurchased_ = 0;
            onChanged();
            return this;
          }

          private int couriersKilled_ ;
          /**
           * optional uint32 couriers_killed = 39;
           */
          public boolean hasCouriersKilled() {
            return ((bitField1_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 couriers_killed = 39;
           */
          public int getCouriersKilled() {
            return couriersKilled_;
          }
          /**
           * optional uint32 couriers_killed = 39;
           */
          public Builder setCouriersKilled(int value) {
            bitField1_ |= 0x00000010;
            couriersKilled_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 couriers_killed = 39;
           */
          public Builder clearCouriersKilled() {
            bitField1_ = (bitField1_ & ~0x00000010);
            couriersKilled_ = 0;
            onChanged();
            return this;
          }

          private int netWorthRank_ ;
          /**
           * optional uint32 net_worth_rank = 40;
           */
          public boolean hasNetWorthRank() {
            return ((bitField1_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional uint32 net_worth_rank = 40;
           */
          public int getNetWorthRank() {
            return netWorthRank_;
          }
          /**
           * optional uint32 net_worth_rank = 40;
           */
          public Builder setNetWorthRank(int value) {
            bitField1_ |= 0x00000020;
            netWorthRank_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 net_worth_rank = 40;
           */
          public Builder clearNetWorthRank() {
            bitField1_ = (bitField1_ & ~0x00000020);
            netWorthRank_ = 0;
            onChanged();
            return this;
          }

          private int supportGoldSpent_ ;
          /**
           * optional uint32 support_gold_spent = 41;
           */
          public boolean hasSupportGoldSpent() {
            return ((bitField1_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint32 support_gold_spent = 41;
           */
          public int getSupportGoldSpent() {
            return supportGoldSpent_;
          }
          /**
           * optional uint32 support_gold_spent = 41;
           */
          public Builder setSupportGoldSpent(int value) {
            bitField1_ |= 0x00000040;
            supportGoldSpent_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 support_gold_spent = 41;
           */
          public Builder clearSupportGoldSpent() {
            bitField1_ = (bitField1_ & ~0x00000040);
            supportGoldSpent_ = 0;
            onChanged();
            return this;
          }

          private int observerWardsPlaced_ ;
          /**
           * optional uint32 observer_wards_placed = 42;
           */
          public boolean hasObserverWardsPlaced() {
            return ((bitField1_ & 0x00000080) == 0x00000080);
          }
          /**
           * optional uint32 observer_wards_placed = 42;
           */
          public int getObserverWardsPlaced() {
            return observerWardsPlaced_;
          }
          /**
           * optional uint32 observer_wards_placed = 42;
           */
          public Builder setObserverWardsPlaced(int value) {
            bitField1_ |= 0x00000080;
            observerWardsPlaced_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 observer_wards_placed = 42;
           */
          public Builder clearObserverWardsPlaced() {
            bitField1_ = (bitField1_ & ~0x00000080);
            observerWardsPlaced_ = 0;
            onChanged();
            return this;
          }

          private int sentryWardsPlaced_ ;
          /**
           * optional uint32 sentry_wards_placed = 43;
           */
          public boolean hasSentryWardsPlaced() {
            return ((bitField1_ & 0x00000100) == 0x00000100);
          }
          /**
           * optional uint32 sentry_wards_placed = 43;
           */
          public int getSentryWardsPlaced() {
            return sentryWardsPlaced_;
          }
          /**
           * optional uint32 sentry_wards_placed = 43;
           */
          public Builder setSentryWardsPlaced(int value) {
            bitField1_ |= 0x00000100;
            sentryWardsPlaced_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 sentry_wards_placed = 43;
           */
          public Builder clearSentryWardsPlaced() {
            bitField1_ = (bitField1_ & ~0x00000100);
            sentryWardsPlaced_ = 0;
            onChanged();
            return this;
          }

          private int wardsDewarded_ ;
          /**
           * optional uint32 wards_dewarded = 44;
           */
          public boolean hasWardsDewarded() {
            return ((bitField1_ & 0x00000200) == 0x00000200);
          }
          /**
           * optional uint32 wards_dewarded = 44;
           */
          public int getWardsDewarded() {
            return wardsDewarded_;
          }
          /**
           * optional uint32 wards_dewarded = 44;
           */
          public Builder setWardsDewarded(int value) {
            bitField1_ |= 0x00000200;
            wardsDewarded_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 wards_dewarded = 44;
           */
          public Builder clearWardsDewarded() {
            bitField1_ = (bitField1_ & ~0x00000200);
            wardsDewarded_ = 0;
            onChanged();
            return this;
          }

          private float stunDuration_ ;
          /**
           * optional float stun_duration = 45;
           */
          public boolean hasStunDuration() {
            return ((bitField1_ & 0x00000400) == 0x00000400);
          }
          /**
           * optional float stun_duration = 45;
           */
          public float getStunDuration() {
            return stunDuration_;
          }
          /**
           * optional float stun_duration = 45;
           */
          public Builder setStunDuration(float value) {
            bitField1_ |= 0x00000400;
            stunDuration_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float stun_duration = 45;
           */
          public Builder clearStunDuration() {
            bitField1_ = (bitField1_ & ~0x00000400);
            stunDuration_ = 0F;
            onChanged();
            return this;
          }

          private skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType rankMmrBoostType_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.k_EDOTAMMRBoostType_None;
          /**
           * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
           */
          public boolean hasRankMmrBoostType() {
            return ((bitField1_ & 0x00000800) == 0x00000800);
          }
          /**
           * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
           */
          public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType getRankMmrBoostType() {
            return rankMmrBoostType_;
          }
          /**
           * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
           */
          public Builder setRankMmrBoostType(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType value) {
            if (value == null) {
              throw new NullPointerException();
            }
            bitField1_ |= 0x00000800;
            rankMmrBoostType_ = value;
            onChanged();
            return this;
          }
          /**
           * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
           */
          public Builder clearRankMmrBoostType() {
            bitField1_ = (bitField1_ & ~0x00000800);
            rankMmrBoostType_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.k_EDOTAMMRBoostType_None;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.Player)
        }

        static {
          defaultInstance = new Player(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.Player)
      }

      private int bitField0_;
      public static final int DOTA_TEAM_FIELD_NUMBER = 1;
      private int dotaTeam_;
      /**
       * optional uint32 dota_team = 1;
       */
      public boolean hasDotaTeam() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 dota_team = 1;
       */
      public int getDotaTeam() {
        return dotaTeam_;
      }

      public static final int PLAYERS_FIELD_NUMBER = 2;
      private java.util.List players_;
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public java.util.List getPlayersList() {
        return players_;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public java.util.List 
          getPlayersOrBuilderList() {
        return players_;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public int getPlayersCount() {
        return players_.size();
      }
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player getPlayers(int index) {
        return players_.get(index);
      }
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
          int index) {
        return players_.get(index);
      }

      public static final int GRAPH_EXPERIENCE_FIELD_NUMBER = 3;
      private java.util.List graphExperience_;
      /**
       * repeated float graph_experience = 3;
       */
      public java.util.List
          getGraphExperienceList() {
        return graphExperience_;
      }
      /**
       * repeated float graph_experience = 3;
       */
      public int getGraphExperienceCount() {
        return graphExperience_.size();
      }
      /**
       * repeated float graph_experience = 3;
       */
      public float getGraphExperience(int index) {
        return graphExperience_.get(index);
      }

      public static final int GRAPH_GOLD_EARNED_FIELD_NUMBER = 4;
      private java.util.List graphGoldEarned_;
      /**
       * repeated float graph_gold_earned = 4;
       */
      public java.util.List
          getGraphGoldEarnedList() {
        return graphGoldEarned_;
      }
      /**
       * repeated float graph_gold_earned = 4;
       */
      public int getGraphGoldEarnedCount() {
        return graphGoldEarned_.size();
      }
      /**
       * repeated float graph_gold_earned = 4;
       */
      public float getGraphGoldEarned(int index) {
        return graphGoldEarned_.get(index);
      }

      public static final int GRAPH_NET_WORTH_FIELD_NUMBER = 5;
      private java.util.List graphNetWorth_;
      /**
       * repeated float graph_net_worth = 5;
       */
      public java.util.List
          getGraphNetWorthList() {
        return graphNetWorth_;
      }
      /**
       * repeated float graph_net_worth = 5;
       */
      public int getGraphNetWorthCount() {
        return graphNetWorth_.size();
      }
      /**
       * repeated float graph_net_worth = 5;
       */
      public float getGraphNetWorth(int index) {
        return graphNetWorth_.get(index);
      }

      public static final int CM_FIRST_PICK_FIELD_NUMBER = 6;
      private boolean cmFirstPick_;
      /**
       * optional bool cm_first_pick = 6;
       */
      public boolean hasCmFirstPick() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional bool cm_first_pick = 6;
       */
      public boolean getCmFirstPick() {
        return cmFirstPick_;
      }

      public static final int CM_CAPTAIN_PLAYER_ID_FIELD_NUMBER = 7;
      private int cmCaptainPlayerId_;
      /**
       * optional uint32 cm_captain_player_id = 7;
       */
      public boolean hasCmCaptainPlayerId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint32 cm_captain_player_id = 7;
       */
      public int getCmCaptainPlayerId() {
        return cmCaptainPlayerId_;
      }

      public static final int CM_BANS_FIELD_NUMBER = 8;
      private java.util.List cmBans_;
      /**
       * repeated uint32 cm_bans = 8;
       */
      public java.util.List
          getCmBansList() {
        return cmBans_;
      }
      /**
       * repeated uint32 cm_bans = 8;
       */
      public int getCmBansCount() {
        return cmBans_.size();
      }
      /**
       * repeated uint32 cm_bans = 8;
       */
      public int getCmBans(int index) {
        return cmBans_.get(index);
      }

      public static final int CM_PICKS_FIELD_NUMBER = 9;
      private java.util.List cmPicks_;
      /**
       * repeated uint32 cm_picks = 9;
       */
      public java.util.List
          getCmPicksList() {
        return cmPicks_;
      }
      /**
       * repeated uint32 cm_picks = 9;
       */
      public int getCmPicksCount() {
        return cmPicks_.size();
      }
      /**
       * repeated uint32 cm_picks = 9;
       */
      public int getCmPicks(int index) {
        return cmPicks_.get(index);
      }

      public static final int CM_PENALTY_FIELD_NUMBER = 10;
      private int cmPenalty_;
      /**
       * optional uint32 cm_penalty = 10;
       */
      public boolean hasCmPenalty() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint32 cm_penalty = 10;
       */
      public int getCmPenalty() {
        return cmPenalty_;
      }

      private void initFields() {
        dotaTeam_ = 0;
        players_ = java.util.Collections.emptyList();
        graphExperience_ = java.util.Collections.emptyList();
        graphGoldEarned_ = java.util.Collections.emptyList();
        graphNetWorth_ = java.util.Collections.emptyList();
        cmFirstPick_ = false;
        cmCaptainPlayerId_ = 0;
        cmBans_ = java.util.Collections.emptyList();
        cmPicks_ = java.util.Collections.emptyList();
        cmPenalty_ = 0;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, dotaTeam_);
        }
        for (int i = 0; i < players_.size(); i++) {
          output.writeMessage(2, players_.get(i));
        }
        for (int i = 0; i < graphExperience_.size(); i++) {
          output.writeFloat(3, graphExperience_.get(i));
        }
        for (int i = 0; i < graphGoldEarned_.size(); i++) {
          output.writeFloat(4, graphGoldEarned_.get(i));
        }
        for (int i = 0; i < graphNetWorth_.size(); i++) {
          output.writeFloat(5, graphNetWorth_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBool(6, cmFirstPick_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(7, cmCaptainPlayerId_);
        }
        for (int i = 0; i < cmBans_.size(); i++) {
          output.writeUInt32(8, cmBans_.get(i));
        }
        for (int i = 0; i < cmPicks_.size(); i++) {
          output.writeUInt32(9, cmPicks_.get(i));
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(10, cmPenalty_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, dotaTeam_);
        }
        for (int i = 0; i < players_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, players_.get(i));
        }
        {
          int dataSize = 0;
          dataSize = 4 * getGraphExperienceList().size();
          size += dataSize;
          size += 1 * getGraphExperienceList().size();
        }
        {
          int dataSize = 0;
          dataSize = 4 * getGraphGoldEarnedList().size();
          size += dataSize;
          size += 1 * getGraphGoldEarnedList().size();
        }
        {
          int dataSize = 0;
          dataSize = 4 * getGraphNetWorthList().size();
          size += dataSize;
          size += 1 * getGraphNetWorthList().size();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, cmFirstPick_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, cmCaptainPlayerId_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < cmBans_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(cmBans_.get(i));
          }
          size += dataSize;
          size += 1 * getCmBansList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < cmPicks_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(cmPicks_.get(i));
          }
          size += dataSize;
          size += 1 * getCmPicksList().size();
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(10, cmPenalty_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team)
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder.class);
        }

        // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getPlayersFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          dotaTeam_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (playersBuilder_ == null) {
            players_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            playersBuilder_.clear();
          }
          graphExperience_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          graphGoldEarned_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          graphNetWorth_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          cmFirstPick_ = false;
          bitField0_ = (bitField0_ & ~0x00000020);
          cmCaptainPlayerId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          cmBans_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          cmPicks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          cmPenalty_ = 0;
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_descriptor;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team getDefaultInstanceForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.getDefaultInstance();
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team build() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team buildPartial() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.dotaTeam_ = dotaTeam_;
          if (playersBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              players_ = java.util.Collections.unmodifiableList(players_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.players_ = players_;
          } else {
            result.players_ = playersBuilder_.build();
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            graphExperience_ = java.util.Collections.unmodifiableList(graphExperience_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.graphExperience_ = graphExperience_;
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            graphGoldEarned_ = java.util.Collections.unmodifiableList(graphGoldEarned_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.graphGoldEarned_ = graphGoldEarned_;
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            graphNetWorth_ = java.util.Collections.unmodifiableList(graphNetWorth_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.graphNetWorth_ = graphNetWorth_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000002;
          }
          result.cmFirstPick_ = cmFirstPick_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000004;
          }
          result.cmCaptainPlayerId_ = cmCaptainPlayerId_;
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            cmBans_ = java.util.Collections.unmodifiableList(cmBans_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.cmBans_ = cmBans_;
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            cmPicks_ = java.util.Collections.unmodifiableList(cmPicks_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.cmPicks_ = cmPicks_;
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000008;
          }
          result.cmPenalty_ = cmPenalty_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team) {
            return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team other) {
          if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.getDefaultInstance()) return this;
          if (other.hasDotaTeam()) {
            setDotaTeam(other.getDotaTeam());
          }
          if (playersBuilder_ == null) {
            if (!other.players_.isEmpty()) {
              if (players_.isEmpty()) {
                players_ = other.players_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensurePlayersIsMutable();
                players_.addAll(other.players_);
              }
              onChanged();
            }
          } else {
            if (!other.players_.isEmpty()) {
              if (playersBuilder_.isEmpty()) {
                playersBuilder_.dispose();
                playersBuilder_ = null;
                players_ = other.players_;
                bitField0_ = (bitField0_ & ~0x00000002);
                playersBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getPlayersFieldBuilder() : null;
              } else {
                playersBuilder_.addAllMessages(other.players_);
              }
            }
          }
          if (!other.graphExperience_.isEmpty()) {
            if (graphExperience_.isEmpty()) {
              graphExperience_ = other.graphExperience_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureGraphExperienceIsMutable();
              graphExperience_.addAll(other.graphExperience_);
            }
            onChanged();
          }
          if (!other.graphGoldEarned_.isEmpty()) {
            if (graphGoldEarned_.isEmpty()) {
              graphGoldEarned_ = other.graphGoldEarned_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureGraphGoldEarnedIsMutable();
              graphGoldEarned_.addAll(other.graphGoldEarned_);
            }
            onChanged();
          }
          if (!other.graphNetWorth_.isEmpty()) {
            if (graphNetWorth_.isEmpty()) {
              graphNetWorth_ = other.graphNetWorth_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureGraphNetWorthIsMutable();
              graphNetWorth_.addAll(other.graphNetWorth_);
            }
            onChanged();
          }
          if (other.hasCmFirstPick()) {
            setCmFirstPick(other.getCmFirstPick());
          }
          if (other.hasCmCaptainPlayerId()) {
            setCmCaptainPlayerId(other.getCmCaptainPlayerId());
          }
          if (!other.cmBans_.isEmpty()) {
            if (cmBans_.isEmpty()) {
              cmBans_ = other.cmBans_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureCmBansIsMutable();
              cmBans_.addAll(other.cmBans_);
            }
            onChanged();
          }
          if (!other.cmPicks_.isEmpty()) {
            if (cmPicks_.isEmpty()) {
              cmPicks_ = other.cmPicks_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureCmPicksIsMutable();
              cmPicks_.addAll(other.cmPicks_);
            }
            onChanged();
          }
          if (other.hasCmPenalty()) {
            setCmPenalty(other.getCmPenalty());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int dotaTeam_ ;
        /**
         * optional uint32 dota_team = 1;
         */
        public boolean hasDotaTeam() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 dota_team = 1;
         */
        public int getDotaTeam() {
          return dotaTeam_;
        }
        /**
         * optional uint32 dota_team = 1;
         */
        public Builder setDotaTeam(int value) {
          bitField0_ |= 0x00000001;
          dotaTeam_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 dota_team = 1;
         */
        public Builder clearDotaTeam() {
          bitField0_ = (bitField0_ & ~0x00000001);
          dotaTeam_ = 0;
          onChanged();
          return this;
        }

        private java.util.List players_ =
          java.util.Collections.emptyList();
        private void ensurePlayersIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            players_ = new java.util.ArrayList(players_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder> playersBuilder_;

        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public java.util.List getPlayersList() {
          if (playersBuilder_ == null) {
            return java.util.Collections.unmodifiableList(players_);
          } else {
            return playersBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public int getPlayersCount() {
          if (playersBuilder_ == null) {
            return players_.size();
          } else {
            return playersBuilder_.getCount();
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player getPlayers(int index) {
          if (playersBuilder_ == null) {
            return players_.get(index);
          } else {
            return playersBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder setPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player value) {
          if (playersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlayersIsMutable();
            players_.set(index, value);
            onChanged();
          } else {
            playersBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder setPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.set(index, builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player value) {
          if (playersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlayersIsMutable();
            players_.add(value);
            onChanged();
          } else {
            playersBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player value) {
          if (playersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlayersIsMutable();
            players_.add(index, value);
            onChanged();
          } else {
            playersBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.add(builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.add(index, builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addAllPlayers(
            java.lang.Iterable values) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, players_);
            onChanged();
          } else {
            playersBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder clearPlayers() {
          if (playersBuilder_ == null) {
            players_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            playersBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder removePlayers(int index) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.remove(index);
            onChanged();
          } else {
            playersBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder getPlayersBuilder(
            int index) {
          return getPlayersFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
            int index) {
          if (playersBuilder_ == null) {
            return players_.get(index);  } else {
            return playersBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public java.util.List 
             getPlayersOrBuilderList() {
          if (playersBuilder_ != null) {
            return playersBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(players_);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder addPlayersBuilder() {
          return getPlayersFieldBuilder().addBuilder(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder addPlayersBuilder(
            int index) {
          return getPlayersFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public java.util.List 
             getPlayersBuilderList() {
          return getPlayersFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder> 
            getPlayersFieldBuilder() {
          if (playersBuilder_ == null) {
            playersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder>(
                    players_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            players_ = null;
          }
          return playersBuilder_;
        }

        private java.util.List graphExperience_ = java.util.Collections.emptyList();
        private void ensureGraphExperienceIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            graphExperience_ = new java.util.ArrayList(graphExperience_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * repeated float graph_experience = 3;
         */
        public java.util.List
            getGraphExperienceList() {
          return java.util.Collections.unmodifiableList(graphExperience_);
        }
        /**
         * repeated float graph_experience = 3;
         */
        public int getGraphExperienceCount() {
          return graphExperience_.size();
        }
        /**
         * repeated float graph_experience = 3;
         */
        public float getGraphExperience(int index) {
          return graphExperience_.get(index);
        }
        /**
         * repeated float graph_experience = 3;
         */
        public Builder setGraphExperience(
            int index, float value) {
          ensureGraphExperienceIsMutable();
          graphExperience_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_experience = 3;
         */
        public Builder addGraphExperience(float value) {
          ensureGraphExperienceIsMutable();
          graphExperience_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_experience = 3;
         */
        public Builder addAllGraphExperience(
            java.lang.Iterable values) {
          ensureGraphExperienceIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, graphExperience_);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_experience = 3;
         */
        public Builder clearGraphExperience() {
          graphExperience_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }

        private java.util.List graphGoldEarned_ = java.util.Collections.emptyList();
        private void ensureGraphGoldEarnedIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            graphGoldEarned_ = new java.util.ArrayList(graphGoldEarned_);
            bitField0_ |= 0x00000008;
           }
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public java.util.List
            getGraphGoldEarnedList() {
          return java.util.Collections.unmodifiableList(graphGoldEarned_);
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public int getGraphGoldEarnedCount() {
          return graphGoldEarned_.size();
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public float getGraphGoldEarned(int index) {
          return graphGoldEarned_.get(index);
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public Builder setGraphGoldEarned(
            int index, float value) {
          ensureGraphGoldEarnedIsMutable();
          graphGoldEarned_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public Builder addGraphGoldEarned(float value) {
          ensureGraphGoldEarnedIsMutable();
          graphGoldEarned_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public Builder addAllGraphGoldEarned(
            java.lang.Iterable values) {
          ensureGraphGoldEarnedIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, graphGoldEarned_);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public Builder clearGraphGoldEarned() {
          graphGoldEarned_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }

        private java.util.List graphNetWorth_ = java.util.Collections.emptyList();
        private void ensureGraphNetWorthIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            graphNetWorth_ = new java.util.ArrayList(graphNetWorth_);
            bitField0_ |= 0x00000010;
           }
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public java.util.List
            getGraphNetWorthList() {
          return java.util.Collections.unmodifiableList(graphNetWorth_);
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public int getGraphNetWorthCount() {
          return graphNetWorth_.size();
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public float getGraphNetWorth(int index) {
          return graphNetWorth_.get(index);
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public Builder setGraphNetWorth(
            int index, float value) {
          ensureGraphNetWorthIsMutable();
          graphNetWorth_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public Builder addGraphNetWorth(float value) {
          ensureGraphNetWorthIsMutable();
          graphNetWorth_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public Builder addAllGraphNetWorth(
            java.lang.Iterable values) {
          ensureGraphNetWorthIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, graphNetWorth_);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public Builder clearGraphNetWorth() {
          graphNetWorth_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
          return this;
        }

        private boolean cmFirstPick_ ;
        /**
         * optional bool cm_first_pick = 6;
         */
        public boolean hasCmFirstPick() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional bool cm_first_pick = 6;
         */
        public boolean getCmFirstPick() {
          return cmFirstPick_;
        }
        /**
         * optional bool cm_first_pick = 6;
         */
        public Builder setCmFirstPick(boolean value) {
          bitField0_ |= 0x00000020;
          cmFirstPick_ = value;
          onChanged();
          return this;
        }
        /**
         * optional bool cm_first_pick = 6;
         */
        public Builder clearCmFirstPick() {
          bitField0_ = (bitField0_ & ~0x00000020);
          cmFirstPick_ = false;
          onChanged();
          return this;
        }

        private int cmCaptainPlayerId_ ;
        /**
         * optional uint32 cm_captain_player_id = 7;
         */
        public boolean hasCmCaptainPlayerId() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint32 cm_captain_player_id = 7;
         */
        public int getCmCaptainPlayerId() {
          return cmCaptainPlayerId_;
        }
        /**
         * optional uint32 cm_captain_player_id = 7;
         */
        public Builder setCmCaptainPlayerId(int value) {
          bitField0_ |= 0x00000040;
          cmCaptainPlayerId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 cm_captain_player_id = 7;
         */
        public Builder clearCmCaptainPlayerId() {
          bitField0_ = (bitField0_ & ~0x00000040);
          cmCaptainPlayerId_ = 0;
          onChanged();
          return this;
        }

        private java.util.List cmBans_ = java.util.Collections.emptyList();
        private void ensureCmBansIsMutable() {
          if (!((bitField0_ & 0x00000080) == 0x00000080)) {
            cmBans_ = new java.util.ArrayList(cmBans_);
            bitField0_ |= 0x00000080;
           }
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public java.util.List
            getCmBansList() {
          return java.util.Collections.unmodifiableList(cmBans_);
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public int getCmBansCount() {
          return cmBans_.size();
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public int getCmBans(int index) {
          return cmBans_.get(index);
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public Builder setCmBans(
            int index, int value) {
          ensureCmBansIsMutable();
          cmBans_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public Builder addCmBans(int value) {
          ensureCmBansIsMutable();
          cmBans_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public Builder addAllCmBans(
            java.lang.Iterable values) {
          ensureCmBansIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, cmBans_);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public Builder clearCmBans() {
          cmBans_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
          return this;
        }

        private java.util.List cmPicks_ = java.util.Collections.emptyList();
        private void ensureCmPicksIsMutable() {
          if (!((bitField0_ & 0x00000100) == 0x00000100)) {
            cmPicks_ = new java.util.ArrayList(cmPicks_);
            bitField0_ |= 0x00000100;
           }
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public java.util.List
            getCmPicksList() {
          return java.util.Collections.unmodifiableList(cmPicks_);
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public int getCmPicksCount() {
          return cmPicks_.size();
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public int getCmPicks(int index) {
          return cmPicks_.get(index);
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public Builder setCmPicks(
            int index, int value) {
          ensureCmPicksIsMutable();
          cmPicks_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public Builder addCmPicks(int value) {
          ensureCmPicksIsMutable();
          cmPicks_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public Builder addAllCmPicks(
            java.lang.Iterable values) {
          ensureCmPicksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, cmPicks_);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public Builder clearCmPicks() {
          cmPicks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
          return this;
        }

        private int cmPenalty_ ;
        /**
         * optional uint32 cm_penalty = 10;
         */
        public boolean hasCmPenalty() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional uint32 cm_penalty = 10;
         */
        public int getCmPenalty() {
          return cmPenalty_;
        }
        /**
         * optional uint32 cm_penalty = 10;
         */
        public Builder setCmPenalty(int value) {
          bitField0_ |= 0x00000200;
          cmPenalty_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 cm_penalty = 10;
         */
        public Builder clearCmPenalty() {
          bitField0_ = (bitField0_ & ~0x00000200);
          cmPenalty_ = 0;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team)
      }

      static {
        defaultInstance = new Team(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team)
    }

    private int bitField0_;
    public static final int TEAMS_FIELD_NUMBER = 1;
    private java.util.List teams_;
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public java.util.List getTeamsList() {
      return teams_;
    }
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public java.util.List 
        getTeamsOrBuilderList() {
      return teams_;
    }
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public int getTeamsCount() {
      return teams_.size();
    }
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team getTeams(int index) {
      return teams_.get(index);
    }
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder getTeamsOrBuilder(
        int index) {
      return teams_.get(index);
    }

    public static final int ITEM_REWARDS_FIELD_NUMBER = 2;
    private java.util.List itemRewards_;
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public java.util.List getItemRewardsList() {
      return itemRewards_;
    }
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public java.util.List 
        getItemRewardsOrBuilderList() {
      return itemRewards_;
    }
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public int getItemRewardsCount() {
      return itemRewards_.size();
    }
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails getItemRewards(int index) {
      return itemRewards_.get(index);
    }
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetailsOrBuilder getItemRewardsOrBuilder(
        int index) {
      return itemRewards_.get(index);
    }

    public static final int LOBBY_ID_FIELD_NUMBER = 3;
    private long lobbyId_;
    /**
     * optional fixed64 lobby_id = 3;
     */
    public boolean hasLobbyId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional fixed64 lobby_id = 3;
     */
    public long getLobbyId() {
      return lobbyId_;
    }

    public static final int REPORT_UNTIL_TIME_FIELD_NUMBER = 4;
    private long reportUntilTime_;
    /**
     * optional fixed64 report_until_time = 4;
     */
    public boolean hasReportUntilTime() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional fixed64 report_until_time = 4;
     */
    public long getReportUntilTime() {
      return reportUntilTime_;
    }

    public static final int EVENT_GAME_CUSTOM_TABLE_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString eventGameCustomTable_;
    /**
     * optional bytes event_game_custom_table = 5;
     */
    public boolean hasEventGameCustomTable() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional bytes event_game_custom_table = 5;
     */
    public com.google.protobuf.ByteString getEventGameCustomTable() {
      return eventGameCustomTable_;
    }

    public static final int PRIMARY_EVENT_ID_FIELD_NUMBER = 6;
    private int primaryEventId_;
    /**
     * optional uint32 primary_event_id = 6;
     */
    public boolean hasPrimaryEventId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional uint32 primary_event_id = 6;
     */
    public int getPrimaryEventId() {
      return primaryEventId_;
    }

    public static final int MATCH_TIPS_FIELD_NUMBER = 7;
    private java.util.List matchTips_;
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public java.util.List getMatchTipsList() {
      return matchTips_;
    }
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public java.util.List 
        getMatchTipsOrBuilderList() {
      return matchTips_;
    }
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public int getMatchTipsCount() {
      return matchTips_.size();
    }
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips getMatchTips(int index) {
      return matchTips_.get(index);
    }
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder getMatchTipsOrBuilder(
        int index) {
      return matchTips_.get(index);
    }

    public static final int MATCHMAKING_STATS_FIELD_NUMBER = 8;
    private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats matchmakingStats_;
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    public boolean hasMatchmakingStats() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats getMatchmakingStats() {
      return matchmakingStats_;
    }
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStatsOrBuilder getMatchmakingStatsOrBuilder() {
      return matchmakingStats_;
    }

    private void initFields() {
      teams_ = java.util.Collections.emptyList();
      itemRewards_ = java.util.Collections.emptyList();
      lobbyId_ = 0L;
      reportUntilTime_ = 0L;
      eventGameCustomTable_ = com.google.protobuf.ByteString.EMPTY;
      primaryEventId_ = 0;
      matchTips_ = java.util.Collections.emptyList();
      matchmakingStats_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < teams_.size(); i++) {
        output.writeMessage(1, teams_.get(i));
      }
      for (int i = 0; i < itemRewards_.size(); i++) {
        output.writeMessage(2, itemRewards_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeFixed64(3, lobbyId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeFixed64(4, reportUntilTime_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(5, eventGameCustomTable_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(6, primaryEventId_);
      }
      for (int i = 0; i < matchTips_.size(); i++) {
        output.writeMessage(7, matchTips_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(8, matchmakingStats_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < teams_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, teams_.get(i));
      }
      for (int i = 0; i < itemRewards_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, itemRewards_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(3, lobbyId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(4, reportUntilTime_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, eventGameCustomTable_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, primaryEventId_);
      }
      for (int i = 0; i < matchTips_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, matchTips_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, matchmakingStats_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code CDOTAMatchMetadata}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTeamsFieldBuilder();
          getItemRewardsFieldBuilder();
          getMatchTipsFieldBuilder();
          getMatchmakingStatsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (teamsBuilder_ == null) {
          teams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          teamsBuilder_.clear();
        }
        if (itemRewardsBuilder_ == null) {
          itemRewards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          itemRewardsBuilder_.clear();
        }
        lobbyId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        reportUntilTime_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        eventGameCustomTable_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        primaryEventId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (matchTipsBuilder_ == null) {
          matchTips_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          matchTipsBuilder_.clear();
        }
        if (matchmakingStatsBuilder_ == null) {
          matchmakingStats_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.getDefaultInstance();
        } else {
          matchmakingStatsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata build() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (teamsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            teams_ = java.util.Collections.unmodifiableList(teams_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.teams_ = teams_;
        } else {
          result.teams_ = teamsBuilder_.build();
        }
        if (itemRewardsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            itemRewards_ = java.util.Collections.unmodifiableList(itemRewards_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.itemRewards_ = itemRewards_;
        } else {
          result.itemRewards_ = itemRewardsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000001;
        }
        result.lobbyId_ = lobbyId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000002;
        }
        result.reportUntilTime_ = reportUntilTime_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000004;
        }
        result.eventGameCustomTable_ = eventGameCustomTable_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000008;
        }
        result.primaryEventId_ = primaryEventId_;
        if (matchTipsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            matchTips_ = java.util.Collections.unmodifiableList(matchTips_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.matchTips_ = matchTips_;
        } else {
          result.matchTips_ = matchTipsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000010;
        }
        if (matchmakingStatsBuilder_ == null) {
          result.matchmakingStats_ = matchmakingStats_;
        } else {
          result.matchmakingStats_ = matchmakingStatsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata) {
          return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance()) return this;
        if (teamsBuilder_ == null) {
          if (!other.teams_.isEmpty()) {
            if (teams_.isEmpty()) {
              teams_ = other.teams_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTeamsIsMutable();
              teams_.addAll(other.teams_);
            }
            onChanged();
          }
        } else {
          if (!other.teams_.isEmpty()) {
            if (teamsBuilder_.isEmpty()) {
              teamsBuilder_.dispose();
              teamsBuilder_ = null;
              teams_ = other.teams_;
              bitField0_ = (bitField0_ & ~0x00000001);
              teamsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTeamsFieldBuilder() : null;
            } else {
              teamsBuilder_.addAllMessages(other.teams_);
            }
          }
        }
        if (itemRewardsBuilder_ == null) {
          if (!other.itemRewards_.isEmpty()) {
            if (itemRewards_.isEmpty()) {
              itemRewards_ = other.itemRewards_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureItemRewardsIsMutable();
              itemRewards_.addAll(other.itemRewards_);
            }
            onChanged();
          }
        } else {
          if (!other.itemRewards_.isEmpty()) {
            if (itemRewardsBuilder_.isEmpty()) {
              itemRewardsBuilder_.dispose();
              itemRewardsBuilder_ = null;
              itemRewards_ = other.itemRewards_;
              bitField0_ = (bitField0_ & ~0x00000002);
              itemRewardsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getItemRewardsFieldBuilder() : null;
            } else {
              itemRewardsBuilder_.addAllMessages(other.itemRewards_);
            }
          }
        }
        if (other.hasLobbyId()) {
          setLobbyId(other.getLobbyId());
        }
        if (other.hasReportUntilTime()) {
          setReportUntilTime(other.getReportUntilTime());
        }
        if (other.hasEventGameCustomTable()) {
          setEventGameCustomTable(other.getEventGameCustomTable());
        }
        if (other.hasPrimaryEventId()) {
          setPrimaryEventId(other.getPrimaryEventId());
        }
        if (matchTipsBuilder_ == null) {
          if (!other.matchTips_.isEmpty()) {
            if (matchTips_.isEmpty()) {
              matchTips_ = other.matchTips_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureMatchTipsIsMutable();
              matchTips_.addAll(other.matchTips_);
            }
            onChanged();
          }
        } else {
          if (!other.matchTips_.isEmpty()) {
            if (matchTipsBuilder_.isEmpty()) {
              matchTipsBuilder_.dispose();
              matchTipsBuilder_ = null;
              matchTips_ = other.matchTips_;
              bitField0_ = (bitField0_ & ~0x00000040);
              matchTipsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMatchTipsFieldBuilder() : null;
            } else {
              matchTipsBuilder_.addAllMessages(other.matchTips_);
            }
          }
        }
        if (other.hasMatchmakingStats()) {
          mergeMatchmakingStats(other.getMatchmakingStats());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List teams_ =
        java.util.Collections.emptyList();
      private void ensureTeamsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          teams_ = new java.util.ArrayList(teams_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder> teamsBuilder_;

      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public java.util.List getTeamsList() {
        if (teamsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(teams_);
        } else {
          return teamsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public int getTeamsCount() {
        if (teamsBuilder_ == null) {
          return teams_.size();
        } else {
          return teamsBuilder_.getCount();
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team getTeams(int index) {
        if (teamsBuilder_ == null) {
          return teams_.get(index);
        } else {
          return teamsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder setTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.set(index, value);
          onChanged();
        } else {
          teamsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder setTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.set(index, builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addTeams(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.add(value);
          onChanged();
        } else {
          teamsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.add(index, value);
          onChanged();
        } else {
          teamsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addTeams(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.add(builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.add(index, builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addAllTeams(
          java.lang.Iterable values) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, teams_);
          onChanged();
        } else {
          teamsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder clearTeams() {
        if (teamsBuilder_ == null) {
          teams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          teamsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder removeTeams(int index) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.remove(index);
          onChanged();
        } else {
          teamsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder getTeamsBuilder(
          int index) {
        return getTeamsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder getTeamsOrBuilder(
          int index) {
        if (teamsBuilder_ == null) {
          return teams_.get(index);  } else {
          return teamsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public java.util.List 
           getTeamsOrBuilderList() {
        if (teamsBuilder_ != null) {
          return teamsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(teams_);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder addTeamsBuilder() {
        return getTeamsFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder addTeamsBuilder(
          int index) {
        return getTeamsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public java.util.List 
           getTeamsBuilderList() {
        return getTeamsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder> 
          getTeamsFieldBuilder() {
        if (teamsBuilder_ == null) {
          teamsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder>(
                  teams_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          teams_ = null;
        }
        return teamsBuilder_;
      }

      private java.util.List itemRewards_ =
        java.util.Collections.emptyList();
      private void ensureItemRewardsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          itemRewards_ = new java.util.ArrayList(itemRewards_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetailsOrBuilder> itemRewardsBuilder_;

      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public java.util.List getItemRewardsList() {
        if (itemRewardsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(itemRewards_);
        } else {
          return itemRewardsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public int getItemRewardsCount() {
        if (itemRewardsBuilder_ == null) {
          return itemRewards_.size();
        } else {
          return itemRewardsBuilder_.getCount();
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails getItemRewards(int index) {
        if (itemRewardsBuilder_ == null) {
          return itemRewards_.get(index);
        } else {
          return itemRewardsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder setItemRewards(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails value) {
        if (itemRewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemRewardsIsMutable();
          itemRewards_.set(index, value);
          onChanged();
        } else {
          itemRewardsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder setItemRewards(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder builderForValue) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          itemRewards_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemRewardsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addItemRewards(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails value) {
        if (itemRewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemRewardsIsMutable();
          itemRewards_.add(value);
          onChanged();
        } else {
          itemRewardsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addItemRewards(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails value) {
        if (itemRewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemRewardsIsMutable();
          itemRewards_.add(index, value);
          onChanged();
        } else {
          itemRewardsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addItemRewards(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder builderForValue) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          itemRewards_.add(builderForValue.build());
          onChanged();
        } else {
          itemRewardsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addItemRewards(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder builderForValue) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          itemRewards_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemRewardsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addAllItemRewards(
          java.lang.Iterable values) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, itemRewards_);
          onChanged();
        } else {
          itemRewardsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder clearItemRewards() {
        if (itemRewardsBuilder_ == null) {
          itemRewards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemRewardsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder removeItemRewards(int index) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          itemRewards_.remove(index);
          onChanged();
        } else {
          itemRewardsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder getItemRewardsBuilder(
          int index) {
        return getItemRewardsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetailsOrBuilder getItemRewardsOrBuilder(
          int index) {
        if (itemRewardsBuilder_ == null) {
          return itemRewards_.get(index);  } else {
          return itemRewardsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public java.util.List 
           getItemRewardsOrBuilderList() {
        if (itemRewardsBuilder_ != null) {
          return itemRewardsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(itemRewards_);
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder addItemRewardsBuilder() {
        return getItemRewardsFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.getDefaultInstance());
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder addItemRewardsBuilder(
          int index) {
        return getItemRewardsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.getDefaultInstance());
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public java.util.List 
           getItemRewardsBuilderList() {
        return getItemRewardsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetailsOrBuilder> 
          getItemRewardsFieldBuilder() {
        if (itemRewardsBuilder_ == null) {
          itemRewardsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetails.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CLobbyTimedRewardDetailsOrBuilder>(
                  itemRewards_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          itemRewards_ = null;
        }
        return itemRewardsBuilder_;
      }

      private long lobbyId_ ;
      /**
       * optional fixed64 lobby_id = 3;
       */
      public boolean hasLobbyId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional fixed64 lobby_id = 3;
       */
      public long getLobbyId() {
        return lobbyId_;
      }
      /**
       * optional fixed64 lobby_id = 3;
       */
      public Builder setLobbyId(long value) {
        bitField0_ |= 0x00000004;
        lobbyId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional fixed64 lobby_id = 3;
       */
      public Builder clearLobbyId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lobbyId_ = 0L;
        onChanged();
        return this;
      }

      private long reportUntilTime_ ;
      /**
       * optional fixed64 report_until_time = 4;
       */
      public boolean hasReportUntilTime() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional fixed64 report_until_time = 4;
       */
      public long getReportUntilTime() {
        return reportUntilTime_;
      }
      /**
       * optional fixed64 report_until_time = 4;
       */
      public Builder setReportUntilTime(long value) {
        bitField0_ |= 0x00000008;
        reportUntilTime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional fixed64 report_until_time = 4;
       */
      public Builder clearReportUntilTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        reportUntilTime_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString eventGameCustomTable_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * optional bytes event_game_custom_table = 5;
       */
      public boolean hasEventGameCustomTable() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional bytes event_game_custom_table = 5;
       */
      public com.google.protobuf.ByteString getEventGameCustomTable() {
        return eventGameCustomTable_;
      }
      /**
       * optional bytes event_game_custom_table = 5;
       */
      public Builder setEventGameCustomTable(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        eventGameCustomTable_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bytes event_game_custom_table = 5;
       */
      public Builder clearEventGameCustomTable() {
        bitField0_ = (bitField0_ & ~0x00000010);
        eventGameCustomTable_ = getDefaultInstance().getEventGameCustomTable();
        onChanged();
        return this;
      }

      private int primaryEventId_ ;
      /**
       * optional uint32 primary_event_id = 6;
       */
      public boolean hasPrimaryEventId() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional uint32 primary_event_id = 6;
       */
      public int getPrimaryEventId() {
        return primaryEventId_;
      }
      /**
       * optional uint32 primary_event_id = 6;
       */
      public Builder setPrimaryEventId(int value) {
        bitField0_ |= 0x00000020;
        primaryEventId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 primary_event_id = 6;
       */
      public Builder clearPrimaryEventId() {
        bitField0_ = (bitField0_ & ~0x00000020);
        primaryEventId_ = 0;
        onChanged();
        return this;
      }

      private java.util.List matchTips_ =
        java.util.Collections.emptyList();
      private void ensureMatchTipsIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          matchTips_ = new java.util.ArrayList(matchTips_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder> matchTipsBuilder_;

      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public java.util.List getMatchTipsList() {
        if (matchTipsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matchTips_);
        } else {
          return matchTipsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public int getMatchTipsCount() {
        if (matchTipsBuilder_ == null) {
          return matchTips_.size();
        } else {
          return matchTipsBuilder_.getCount();
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips getMatchTips(int index) {
        if (matchTipsBuilder_ == null) {
          return matchTips_.get(index);
        } else {
          return matchTipsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder setMatchTips(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips value) {
        if (matchTipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchTipsIsMutable();
          matchTips_.set(index, value);
          onChanged();
        } else {
          matchTipsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder setMatchTips(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder builderForValue) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          matchTips_.set(index, builderForValue.build());
          onChanged();
        } else {
          matchTipsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addMatchTips(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips value) {
        if (matchTipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchTipsIsMutable();
          matchTips_.add(value);
          onChanged();
        } else {
          matchTipsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addMatchTips(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips value) {
        if (matchTipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchTipsIsMutable();
          matchTips_.add(index, value);
          onChanged();
        } else {
          matchTipsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addMatchTips(
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder builderForValue) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          matchTips_.add(builderForValue.build());
          onChanged();
        } else {
          matchTipsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addMatchTips(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder builderForValue) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          matchTips_.add(index, builderForValue.build());
          onChanged();
        } else {
          matchTipsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addAllMatchTips(
          java.lang.Iterable values) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matchTips_);
          onChanged();
        } else {
          matchTipsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder clearMatchTips() {
        if (matchTipsBuilder_ == null) {
          matchTips_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          matchTipsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder removeMatchTips(int index) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          matchTips_.remove(index);
          onChanged();
        } else {
          matchTipsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder getMatchTipsBuilder(
          int index) {
        return getMatchTipsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder getMatchTipsOrBuilder(
          int index) {
        if (matchTipsBuilder_ == null) {
          return matchTips_.get(index);  } else {
          return matchTipsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public java.util.List 
           getMatchTipsOrBuilderList() {
        if (matchTipsBuilder_ != null) {
          return matchTipsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matchTips_);
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder addMatchTipsBuilder() {
        return getMatchTipsFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.getDefaultInstance());
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder addMatchTipsBuilder(
          int index) {
        return getMatchTipsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.getDefaultInstance());
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public java.util.List 
           getMatchTipsBuilderList() {
        return getMatchTipsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder> 
          getMatchTipsFieldBuilder() {
        if (matchTipsBuilder_ == null) {
          matchTipsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder>(
                  matchTips_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          matchTips_ = null;
        }
        return matchTipsBuilder_;
      }

      private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats matchmakingStats_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStatsOrBuilder> matchmakingStatsBuilder_;
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public boolean hasMatchmakingStats() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats getMatchmakingStats() {
        if (matchmakingStatsBuilder_ == null) {
          return matchmakingStats_;
        } else {
          return matchmakingStatsBuilder_.getMessage();
        }
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public Builder setMatchmakingStats(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats value) {
        if (matchmakingStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          matchmakingStats_ = value;
          onChanged();
        } else {
          matchmakingStatsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public Builder setMatchmakingStats(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.Builder builderForValue) {
        if (matchmakingStatsBuilder_ == null) {
          matchmakingStats_ = builderForValue.build();
          onChanged();
        } else {
          matchmakingStatsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public Builder mergeMatchmakingStats(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats value) {
        if (matchmakingStatsBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080) &&
              matchmakingStats_ != skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.getDefaultInstance()) {
            matchmakingStats_ =
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.newBuilder(matchmakingStats_).mergeFrom(value).buildPartial();
          } else {
            matchmakingStats_ = value;
          }
          onChanged();
        } else {
          matchmakingStatsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public Builder clearMatchmakingStats() {
        if (matchmakingStatsBuilder_ == null) {
          matchmakingStats_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.getDefaultInstance();
          onChanged();
        } else {
          matchmakingStatsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.Builder getMatchmakingStatsBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getMatchmakingStatsFieldBuilder().getBuilder();
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStatsOrBuilder getMatchmakingStatsOrBuilder() {
        if (matchmakingStatsBuilder_ != null) {
          return matchmakingStatsBuilder_.getMessageOrBuilder();
        } else {
          return matchmakingStats_;
        }
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStatsOrBuilder> 
          getMatchmakingStatsFieldBuilder() {
        if (matchmakingStatsBuilder_ == null) {
          matchmakingStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStatsOrBuilder>(
                  getMatchmakingStats(),
                  getParentForChildren(),
                  isClean());
          matchmakingStats_ = null;
        }
        return matchmakingStatsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata)
    }

    static {
      defaultInstance = new CDOTAMatchMetadata(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata)
  }

  public interface CDOTAMatchPrivateMetadataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    java.util.List 
        getTeamsList();
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team getTeams(int index);
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    int getTeamsCount();
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    java.util.List 
        getTeamsOrBuilderList();
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder getTeamsOrBuilder(
        int index);

    /**
     * repeated float graph_win_probability = 2;
     */
    java.util.List getGraphWinProbabilityList();
    /**
     * repeated float graph_win_probability = 2;
     */
    int getGraphWinProbabilityCount();
    /**
     * repeated float graph_win_probability = 2;
     */
    float getGraphWinProbability(int index);
  }
  /**
   * Protobuf type {@code CDOTAMatchPrivateMetadata}
   */
  public static final class CDOTAMatchPrivateMetadata extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata)
      CDOTAMatchPrivateMetadataOrBuilder {
    // Use CDOTAMatchPrivateMetadata.newBuilder() to construct.
    private CDOTAMatchPrivateMetadata(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CDOTAMatchPrivateMetadata(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final CDOTAMatchPrivateMetadata defaultInstance;
    public static CDOTAMatchPrivateMetadata getDefaultInstance() {
      return defaultInstance;
    }

    public CDOTAMatchPrivateMetadata getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CDOTAMatchPrivateMetadata(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                teams_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              teams_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PARSER, extensionRegistry));
              break;
            }
            case 21: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                graphWinProbability_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              graphWinProbability_.add(input.readFloat());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                graphWinProbability_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                graphWinProbability_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          teams_ = java.util.Collections.unmodifiableList(teams_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          graphWinProbability_ = java.util.Collections.unmodifiableList(graphWinProbability_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Builder.class);
    }

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

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

    public interface TeamOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint32 dota_team = 1;
       */
      boolean hasDotaTeam();
      /**
       * optional uint32 dota_team = 1;
       */
      int getDotaTeam();

      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      java.util.List 
          getPlayersList();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player getPlayers(int index);
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      int getPlayersCount();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      java.util.List 
          getPlayersOrBuilderList();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
          int index);

      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      java.util.List 
          getBuildingsList();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building getBuildings(int index);
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      int getBuildingsCount();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      java.util.List 
          getBuildingsOrBuilderList();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder getBuildingsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code CDOTAMatchPrivateMetadata.Team}
     */
    public static final class Team extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team)
        TeamOrBuilder {
      // Use Team.newBuilder() to construct.
      private Team(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Team(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final Team defaultInstance;
      public static Team getDefaultInstance() {
        return defaultInstance;
      }

      public Team getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Team(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                dotaTeam_ = input.readUInt32();
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  players_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000002;
                }
                players_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.PARSER, extensionRegistry));
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  buildings_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                buildings_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.PARSER, extensionRegistry));
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            players_ = java.util.Collections.unmodifiableList(players_);
          }
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            buildings_ = java.util.Collections.unmodifiableList(buildings_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder.class);
      }

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

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

      public interface PlayerOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 account_id = 1;
         */
        boolean hasAccountId();
        /**
         * optional uint32 account_id = 1;
         */
        int getAccountId();

        /**
         * optional uint32 player_slot = 2;
         */
        boolean hasPlayerSlot();
        /**
         * optional uint32 player_slot = 2;
         */
        int getPlayerSlot();

        /**
         * optional bytes position_stream = 3;
         */
        boolean hasPositionStream();
        /**
         * optional bytes position_stream = 3;
         */
        com.google.protobuf.ByteString getPositionStream();

        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        java.util.List 
            getCombatSegmentsList();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment getCombatSegments(int index);
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        int getCombatSegmentsCount();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        java.util.List 
            getCombatSegmentsOrBuilderList();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder getCombatSegmentsOrBuilder(
            int index);

        /**
         * repeated string damage_unit_names = 5;
         */
        com.google.protobuf.ProtocolStringList
            getDamageUnitNamesList();
        /**
         * repeated string damage_unit_names = 5;
         */
        int getDamageUnitNamesCount();
        /**
         * repeated string damage_unit_names = 5;
         */
        java.lang.String getDamageUnitNames(int index);
        /**
         * repeated string damage_unit_names = 5;
         */
        com.google.protobuf.ByteString
            getDamageUnitNamesBytes(int index);

        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        java.util.List 
            getBuffRecordsList();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord getBuffRecords(int index);
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        int getBuffRecordsCount();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        java.util.List 
            getBuffRecordsOrBuilderList();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder getBuffRecordsOrBuilder(
            int index);

        /**
         * repeated float graph_kills = 7;
         */
        java.util.List getGraphKillsList();
        /**
         * repeated float graph_kills = 7;
         */
        int getGraphKillsCount();
        /**
         * repeated float graph_kills = 7;
         */
        float getGraphKills(int index);

        /**
         * repeated float graph_deaths = 8;
         */
        java.util.List getGraphDeathsList();
        /**
         * repeated float graph_deaths = 8;
         */
        int getGraphDeathsCount();
        /**
         * repeated float graph_deaths = 8;
         */
        float getGraphDeaths(int index);

        /**
         * repeated float graph_assists = 9;
         */
        java.util.List getGraphAssistsList();
        /**
         * repeated float graph_assists = 9;
         */
        int getGraphAssistsCount();
        /**
         * repeated float graph_assists = 9;
         */
        float getGraphAssists(int index);

        /**
         * repeated float graph_lasthits = 10;
         */
        java.util.List getGraphLasthitsList();
        /**
         * repeated float graph_lasthits = 10;
         */
        int getGraphLasthitsCount();
        /**
         * repeated float graph_lasthits = 10;
         */
        float getGraphLasthits(int index);

        /**
         * repeated float graph_denies = 11;
         */
        java.util.List getGraphDeniesList();
        /**
         * repeated float graph_denies = 11;
         */
        int getGraphDeniesCount();
        /**
         * repeated float graph_denies = 11;
         */
        float getGraphDenies(int index);
      }
      /**
       * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player}
       */
      public static final class Player extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player)
          PlayerOrBuilder {
        // Use Player.newBuilder() to construct.
        private Player(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private Player(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final Player defaultInstance;
        public static Player getDefaultInstance() {
          return defaultInstance;
        }

        public Player getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private Player(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  accountId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  playerSlot_ = input.readUInt32();
                  break;
                }
                case 26: {
                  bitField0_ |= 0x00000004;
                  positionStream_ = input.readBytes();
                  break;
                }
                case 34: {
                  if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                    combatSegments_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  combatSegments_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.PARSER, extensionRegistry));
                  break;
                }
                case 42: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    damageUnitNames_ = new com.google.protobuf.LazyStringArrayList();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  damageUnitNames_.add(bs);
                  break;
                }
                case 50: {
                  if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                    buffRecords_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000020;
                  }
                  buffRecords_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.PARSER, extensionRegistry));
                  break;
                }
                case 61: {
                  if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                    graphKills_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000040;
                  }
                  graphKills_.add(input.readFloat());
                  break;
                }
                case 58: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                    graphKills_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000040;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphKills_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 69: {
                  if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                    graphDeaths_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000080;
                  }
                  graphDeaths_.add(input.readFloat());
                  break;
                }
                case 66: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                    graphDeaths_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000080;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphDeaths_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 77: {
                  if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                    graphAssists_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000100;
                  }
                  graphAssists_.add(input.readFloat());
                  break;
                }
                case 74: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000100) == 0x00000100) && input.getBytesUntilLimit() > 0) {
                    graphAssists_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000100;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphAssists_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 85: {
                  if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                    graphLasthits_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000200;
                  }
                  graphLasthits_.add(input.readFloat());
                  break;
                }
                case 82: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000200) == 0x00000200) && input.getBytesUntilLimit() > 0) {
                    graphLasthits_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000200;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphLasthits_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 93: {
                  if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                    graphDenies_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000400;
                  }
                  graphDenies_.add(input.readFloat());
                  break;
                }
                case 90: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000400) == 0x00000400) && input.getBytesUntilLimit() > 0) {
                    graphDenies_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000400;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphDenies_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
              combatSegments_ = java.util.Collections.unmodifiableList(combatSegments_);
            }
            if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
              damageUnitNames_ = damageUnitNames_.getUnmodifiableView();
            }
            if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
              buffRecords_ = java.util.Collections.unmodifiableList(buffRecords_);
            }
            if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
              graphKills_ = java.util.Collections.unmodifiableList(graphKills_);
            }
            if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
              graphDeaths_ = java.util.Collections.unmodifiableList(graphDeaths_);
            }
            if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
              graphAssists_ = java.util.Collections.unmodifiableList(graphAssists_);
            }
            if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
              graphLasthits_ = java.util.Collections.unmodifiableList(graphLasthits_);
            }
            if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
              graphDenies_ = java.util.Collections.unmodifiableList(graphDenies_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder.class);
        }

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

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

        public interface CombatSegmentOrBuilder extends
            // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
            com.google.protobuf.MessageOrBuilder {

          /**
           * optional int32 game_time = 1;
           */
          boolean hasGameTime();
          /**
           * optional int32 game_time = 1;
           */
          int getGameTime();

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          java.util.List 
              getDamageByAbilityList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility getDamageByAbility(int index);
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          int getDamageByAbilityCount();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          java.util.List 
              getDamageByAbilityOrBuilderList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder getDamageByAbilityOrBuilder(
              int index);
        }
        /**
         * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment}
         */
        public static final class CombatSegment extends
            com.google.protobuf.GeneratedMessage implements
            // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
            CombatSegmentOrBuilder {
          // Use CombatSegment.newBuilder() to construct.
          private CombatSegment(com.google.protobuf.GeneratedMessage.Builder builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private CombatSegment(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

          private static final CombatSegment defaultInstance;
          public static CombatSegment getDefaultInstance() {
            return defaultInstance;
          }

          public CombatSegment getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private CombatSegment(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            initFields();
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!parseUnknownField(input, unknownFields,
                                           extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                  case 8: {
                    bitField0_ |= 0x00000001;
                    gameTime_ = input.readInt32();
                    break;
                  }
                  case 18: {
                    if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                      damageByAbility_ = new java.util.ArrayList();
                      mutable_bitField0_ |= 0x00000002;
                    }
                    damageByAbility_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.PARSER, extensionRegistry));
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e.getMessage()).setUnfinishedMessage(this);
            } finally {
              if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                damageByAbility_ = java.util.Collections.unmodifiableList(damageByAbility_);
              }
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder.class);
          }

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

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

          public interface DamageByAbilityOrBuilder extends
              // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
              com.google.protobuf.MessageOrBuilder {

            /**
             * optional uint32 source_unit_index = 3;
             */
            boolean hasSourceUnitIndex();
            /**
             * optional uint32 source_unit_index = 3;
             */
            int getSourceUnitIndex();

            /**
             * optional uint32 ability_id = 1;
             */
            boolean hasAbilityId();
            /**
             * optional uint32 ability_id = 1;
             */
            int getAbilityId();

            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            java.util.List 
                getByHeroTargetsList();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget getByHeroTargets(int index);
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            int getByHeroTargetsCount();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            java.util.List 
                getByHeroTargetsOrBuilderList();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                int index);
          }
          /**
           * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility}
           */
          public static final class DamageByAbility extends
              com.google.protobuf.GeneratedMessage implements
              // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
              DamageByAbilityOrBuilder {
            // Use DamageByAbility.newBuilder() to construct.
            private DamageByAbility(com.google.protobuf.GeneratedMessage.Builder builder) {
              super(builder);
              this.unknownFields = builder.getUnknownFields();
            }
            private DamageByAbility(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

            private static final DamageByAbility defaultInstance;
            public static DamageByAbility getDefaultInstance() {
              return defaultInstance;
            }

            public DamageByAbility getDefaultInstanceForType() {
              return defaultInstance;
            }

            private final com.google.protobuf.UnknownFieldSet unknownFields;
            @java.lang.Override
            public final com.google.protobuf.UnknownFieldSet
                getUnknownFields() {
              return this.unknownFields;
            }
            private DamageByAbility(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              initFields();
              int mutable_bitField0_ = 0;
              com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                  com.google.protobuf.UnknownFieldSet.newBuilder();
              try {
                boolean done = false;
                while (!done) {
                  int tag = input.readTag();
                  switch (tag) {
                    case 0:
                      done = true;
                      break;
                    default: {
                      if (!parseUnknownField(input, unknownFields,
                                             extensionRegistry, tag)) {
                        done = true;
                      }
                      break;
                    }
                    case 8: {
                      bitField0_ |= 0x00000002;
                      abilityId_ = input.readUInt32();
                      break;
                    }
                    case 18: {
                      if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                        byHeroTargets_ = new java.util.ArrayList();
                        mutable_bitField0_ |= 0x00000004;
                      }
                      byHeroTargets_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.PARSER, extensionRegistry));
                      break;
                    }
                    case 24: {
                      bitField0_ |= 0x00000001;
                      sourceUnitIndex_ = input.readUInt32();
                      break;
                    }
                  }
                }
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
              } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this);
              } finally {
                if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
              }
            }
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder.class);
            }

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

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

            public interface ByHeroTargetOrBuilder extends
                // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
                com.google.protobuf.MessageOrBuilder {

              /**
               * optional uint32 hero_id = 1;
               */
              boolean hasHeroId();
              /**
               * optional uint32 hero_id = 1;
               */
              int getHeroId();

              /**
               * optional uint32 damage = 2;
               */
              boolean hasDamage();
              /**
               * optional uint32 damage = 2;
               */
              int getDamage();
            }
            /**
             * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget}
             */
            public static final class ByHeroTarget extends
                com.google.protobuf.GeneratedMessage implements
                // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
                ByHeroTargetOrBuilder {
              // Use ByHeroTarget.newBuilder() to construct.
              private ByHeroTarget(com.google.protobuf.GeneratedMessage.Builder builder) {
                super(builder);
                this.unknownFields = builder.getUnknownFields();
              }
              private ByHeroTarget(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

              private static final ByHeroTarget defaultInstance;
              public static ByHeroTarget getDefaultInstance() {
                return defaultInstance;
              }

              public ByHeroTarget getDefaultInstanceForType() {
                return defaultInstance;
              }

              private final com.google.protobuf.UnknownFieldSet unknownFields;
              @java.lang.Override
              public final com.google.protobuf.UnknownFieldSet
                  getUnknownFields() {
                return this.unknownFields;
              }
              private ByHeroTarget(
                  com.google.protobuf.CodedInputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                initFields();
                int mutable_bitField0_ = 0;
                com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                    com.google.protobuf.UnknownFieldSet.newBuilder();
                try {
                  boolean done = false;
                  while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                      case 0:
                        done = true;
                        break;
                      default: {
                        if (!parseUnknownField(input, unknownFields,
                                               extensionRegistry, tag)) {
                          done = true;
                        }
                        break;
                      }
                      case 8: {
                        bitField0_ |= 0x00000001;
                        heroId_ = input.readUInt32();
                        break;
                      }
                      case 16: {
                        bitField0_ |= 0x00000002;
                        damage_ = input.readUInt32();
                        break;
                      }
                    }
                  }
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                  throw e.setUnfinishedMessage(this);
                } catch (java.io.IOException e) {
                  throw new com.google.protobuf.InvalidProtocolBufferException(
                      e.getMessage()).setUnfinishedMessage(this);
                } finally {
                  this.unknownFields = unknownFields.build();
                  makeExtensionsImmutable();
                }
              }
              public static final com.google.protobuf.Descriptors.Descriptor
                  getDescriptor() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor;
              }

              protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                  internalGetFieldAccessorTable() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder.class);
              }

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

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

              private int bitField0_;
              public static final int HERO_ID_FIELD_NUMBER = 1;
              private int heroId_;
              /**
               * optional uint32 hero_id = 1;
               */
              public boolean hasHeroId() {
                return ((bitField0_ & 0x00000001) == 0x00000001);
              }
              /**
               * optional uint32 hero_id = 1;
               */
              public int getHeroId() {
                return heroId_;
              }

              public static final int DAMAGE_FIELD_NUMBER = 2;
              private int damage_;
              /**
               * optional uint32 damage = 2;
               */
              public boolean hasDamage() {
                return ((bitField0_ & 0x00000002) == 0x00000002);
              }
              /**
               * optional uint32 damage = 2;
               */
              public int getDamage() {
                return damage_;
              }

              private void initFields() {
                heroId_ = 0;
                damage_ = 0;
              }
              private byte memoizedIsInitialized = -1;
              public final boolean isInitialized() {
                byte isInitialized = memoizedIsInitialized;
                if (isInitialized == 1) return true;
                if (isInitialized == 0) return false;

                memoizedIsInitialized = 1;
                return true;
              }

              public void writeTo(com.google.protobuf.CodedOutputStream output)
                                  throws java.io.IOException {
                getSerializedSize();
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  output.writeUInt32(1, heroId_);
                }
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  output.writeUInt32(2, damage_);
                }
                getUnknownFields().writeTo(output);
              }

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

                size = 0;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                  size += com.google.protobuf.CodedOutputStream
                    .computeUInt32Size(1, heroId_);
                }
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  size += com.google.protobuf.CodedOutputStream
                    .computeUInt32Size(2, damage_);
                }
                size += getUnknownFields().getSerializedSize();
                memoizedSerializedSize = size;
                return size;
              }

              private static final long serialVersionUID = 0L;
              @java.lang.Override
              protected java.lang.Object writeReplace()
                  throws java.io.ObjectStreamException {
                return super.writeReplace();
              }

              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  com.google.protobuf.ByteString data)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  com.google.protobuf.ByteString data,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(byte[] data)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  byte[] data,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(java.io.InputStream input)
                  throws java.io.IOException {
                return PARSER.parseFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  java.io.InputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                return PARSER.parseFrom(input, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseDelimitedFrom(java.io.InputStream input)
                  throws java.io.IOException {
                return PARSER.parseDelimitedFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseDelimitedFrom(
                  java.io.InputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                return PARSER.parseDelimitedFrom(input, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  com.google.protobuf.CodedInputStream input)
                  throws java.io.IOException {
                return PARSER.parseFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  com.google.protobuf.CodedInputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                return PARSER.parseFrom(input, extensionRegistry);
              }

              public static Builder newBuilder() { return Builder.create(); }
              public Builder newBuilderForType() { return newBuilder(); }
              public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget prototype) {
                return newBuilder().mergeFrom(prototype);
              }
              public Builder toBuilder() { return newBuilder(this); }

              @java.lang.Override
              protected Builder newBuilderForType(
                  com.google.protobuf.GeneratedMessage.BuilderParent parent) {
                Builder builder = new Builder(parent);
                return builder;
              }
              /**
               * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget}
               */
              public static final class Builder extends
                  com.google.protobuf.GeneratedMessage.Builder implements
                  // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder {
                public static final com.google.protobuf.Descriptors.Descriptor
                    getDescriptor() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor;
                }

                protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                    internalGetFieldAccessorTable() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_fieldAccessorTable
                      .ensureFieldAccessorsInitialized(
                          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder.class);
                }

                // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.newBuilder()
                private Builder() {
                  maybeForceBuilderInitialization();
                }

                private Builder(
                    com.google.protobuf.GeneratedMessage.BuilderParent parent) {
                  super(parent);
                  maybeForceBuilderInitialization();
                }
                private void maybeForceBuilderInitialization() {
                  if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                  }
                }
                private static Builder create() {
                  return new Builder();
                }

                public Builder clear() {
                  super.clear();
                  heroId_ = 0;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  damage_ = 0;
                  bitField0_ = (bitField0_ & ~0x00000002);
                  return this;
                }

                public Builder clone() {
                  return create().mergeFrom(buildPartial());
                }

                public com.google.protobuf.Descriptors.Descriptor
                    getDescriptorForType() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor;
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget getDefaultInstanceForType() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.getDefaultInstance();
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget build() {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget result = buildPartial();
                  if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                  }
                  return result;
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget buildPartial() {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget(this);
                  int from_bitField0_ = bitField0_;
                  int to_bitField0_ = 0;
                  if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                    to_bitField0_ |= 0x00000001;
                  }
                  result.heroId_ = heroId_;
                  if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                    to_bitField0_ |= 0x00000002;
                  }
                  result.damage_ = damage_;
                  result.bitField0_ = to_bitField0_;
                  onBuilt();
                  return result;
                }

                public Builder mergeFrom(com.google.protobuf.Message other) {
                  if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget) {
                    return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)other);
                  } else {
                    super.mergeFrom(other);
                    return this;
                  }
                }

                public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget other) {
                  if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.getDefaultInstance()) return this;
                  if (other.hasHeroId()) {
                    setHeroId(other.getHeroId());
                  }
                  if (other.hasDamage()) {
                    setDamage(other.getDamage());
                  }
                  this.mergeUnknownFields(other.getUnknownFields());
                  return this;
                }

                public final boolean isInitialized() {
                  return true;
                }

                public Builder mergeFrom(
                    com.google.protobuf.CodedInputStream input,
                    com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                    throws java.io.IOException {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parsedMessage = null;
                  try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget) e.getUnfinishedMessage();
                    throw e;
                  } finally {
                    if (parsedMessage != null) {
                      mergeFrom(parsedMessage);
                    }
                  }
                  return this;
                }
                private int bitField0_;

                private int heroId_ ;
                /**
                 * optional uint32 hero_id = 1;
                 */
                public boolean hasHeroId() {
                  return ((bitField0_ & 0x00000001) == 0x00000001);
                }
                /**
                 * optional uint32 hero_id = 1;
                 */
                public int getHeroId() {
                  return heroId_;
                }
                /**
                 * optional uint32 hero_id = 1;
                 */
                public Builder setHeroId(int value) {
                  bitField0_ |= 0x00000001;
                  heroId_ = value;
                  onChanged();
                  return this;
                }
                /**
                 * optional uint32 hero_id = 1;
                 */
                public Builder clearHeroId() {
                  bitField0_ = (bitField0_ & ~0x00000001);
                  heroId_ = 0;
                  onChanged();
                  return this;
                }

                private int damage_ ;
                /**
                 * optional uint32 damage = 2;
                 */
                public boolean hasDamage() {
                  return ((bitField0_ & 0x00000002) == 0x00000002);
                }
                /**
                 * optional uint32 damage = 2;
                 */
                public int getDamage() {
                  return damage_;
                }
                /**
                 * optional uint32 damage = 2;
                 */
                public Builder setDamage(int value) {
                  bitField0_ |= 0x00000002;
                  damage_ = value;
                  onChanged();
                  return this;
                }
                /**
                 * optional uint32 damage = 2;
                 */
                public Builder clearDamage() {
                  bitField0_ = (bitField0_ & ~0x00000002);
                  damage_ = 0;
                  onChanged();
                  return this;
                }

                // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
              }

              static {
                defaultInstance = new ByHeroTarget(true);
                defaultInstance.initFields();
              }

              // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
            }

            private int bitField0_;
            public static final int SOURCE_UNIT_INDEX_FIELD_NUMBER = 3;
            private int sourceUnitIndex_;
            /**
             * optional uint32 source_unit_index = 3;
             */
            public boolean hasSourceUnitIndex() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 source_unit_index = 3;
             */
            public int getSourceUnitIndex() {
              return sourceUnitIndex_;
            }

            public static final int ABILITY_ID_FIELD_NUMBER = 1;
            private int abilityId_;
            /**
             * optional uint32 ability_id = 1;
             */
            public boolean hasAbilityId() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional uint32 ability_id = 1;
             */
            public int getAbilityId() {
              return abilityId_;
            }

            public static final int BY_HERO_TARGETS_FIELD_NUMBER = 2;
            private java.util.List byHeroTargets_;
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List getByHeroTargetsList() {
              return byHeroTargets_;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List 
                getByHeroTargetsOrBuilderList() {
              return byHeroTargets_;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public int getByHeroTargetsCount() {
              return byHeroTargets_.size();
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget getByHeroTargets(int index) {
              return byHeroTargets_.get(index);
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                int index) {
              return byHeroTargets_.get(index);
            }

            private void initFields() {
              sourceUnitIndex_ = 0;
              abilityId_ = 0;
              byHeroTargets_ = java.util.Collections.emptyList();
            }
            private byte memoizedIsInitialized = -1;
            public final boolean isInitialized() {
              byte isInitialized = memoizedIsInitialized;
              if (isInitialized == 1) return true;
              if (isInitialized == 0) return false;

              memoizedIsInitialized = 1;
              return true;
            }

            public void writeTo(com.google.protobuf.CodedOutputStream output)
                                throws java.io.IOException {
              getSerializedSize();
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                output.writeUInt32(1, abilityId_);
              }
              for (int i = 0; i < byHeroTargets_.size(); i++) {
                output.writeMessage(2, byHeroTargets_.get(i));
              }
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                output.writeUInt32(3, sourceUnitIndex_);
              }
              getUnknownFields().writeTo(output);
            }

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

              size = 0;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32Size(1, abilityId_);
              }
              for (int i = 0; i < byHeroTargets_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                  .computeMessageSize(2, byHeroTargets_.get(i));
              }
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32Size(3, sourceUnitIndex_);
              }
              size += getUnknownFields().getSerializedSize();
              memoizedSerializedSize = size;
              return size;
            }

            private static final long serialVersionUID = 0L;
            @java.lang.Override
            protected java.lang.Object writeReplace()
                throws java.io.ObjectStreamException {
              return super.writeReplace();
            }

            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseFrom(input, extensionRegistry);
            }

            public static Builder newBuilder() { return Builder.create(); }
            public Builder newBuilderForType() { return newBuilder(); }
            public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility prototype) {
              return newBuilder().mergeFrom(prototype);
            }
            public Builder toBuilder() { return newBuilder(this); }

            @java.lang.Override
            protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
              Builder builder = new Builder(parent);
              return builder;
            }
            /**
             * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility}
             */
            public static final class Builder extends
                com.google.protobuf.GeneratedMessage.Builder implements
                // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder {
              public static final com.google.protobuf.Descriptors.Descriptor
                  getDescriptor() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor;
              }

              protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                  internalGetFieldAccessorTable() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder.class);
              }

              // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.newBuilder()
              private Builder() {
                maybeForceBuilderInitialization();
              }

              private Builder(
                  com.google.protobuf.GeneratedMessage.BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
              }
              private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                  getByHeroTargetsFieldBuilder();
                }
              }
              private static Builder create() {
                return new Builder();
              }

              public Builder clear() {
                super.clear();
                sourceUnitIndex_ = 0;
                bitField0_ = (bitField0_ & ~0x00000001);
                abilityId_ = 0;
                bitField0_ = (bitField0_ & ~0x00000002);
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargets_ = java.util.Collections.emptyList();
                  bitField0_ = (bitField0_ & ~0x00000004);
                } else {
                  byHeroTargetsBuilder_.clear();
                }
                return this;
              }

              public Builder clone() {
                return create().mergeFrom(buildPartial());
              }

              public com.google.protobuf.Descriptors.Descriptor
                  getDescriptorForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility getDefaultInstanceForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.getDefaultInstance();
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility build() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility result = buildPartial();
                if (!result.isInitialized()) {
                  throw newUninitializedMessageException(result);
                }
                return result;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility buildPartial() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility(this);
                int from_bitField0_ = bitField0_;
                int to_bitField0_ = 0;
                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                  to_bitField0_ |= 0x00000001;
                }
                result.sourceUnitIndex_ = sourceUnitIndex_;
                if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                  to_bitField0_ |= 0x00000002;
                }
                result.abilityId_ = abilityId_;
                if (byHeroTargetsBuilder_ == null) {
                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
                    byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
                    bitField0_ = (bitField0_ & ~0x00000004);
                  }
                  result.byHeroTargets_ = byHeroTargets_;
                } else {
                  result.byHeroTargets_ = byHeroTargetsBuilder_.build();
                }
                result.bitField0_ = to_bitField0_;
                onBuilt();
                return result;
              }

              public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility) {
                  return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)other);
                } else {
                  super.mergeFrom(other);
                  return this;
                }
              }

              public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility other) {
                if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.getDefaultInstance()) return this;
                if (other.hasSourceUnitIndex()) {
                  setSourceUnitIndex(other.getSourceUnitIndex());
                }
                if (other.hasAbilityId()) {
                  setAbilityId(other.getAbilityId());
                }
                if (byHeroTargetsBuilder_ == null) {
                  if (!other.byHeroTargets_.isEmpty()) {
                    if (byHeroTargets_.isEmpty()) {
                      byHeroTargets_ = other.byHeroTargets_;
                      bitField0_ = (bitField0_ & ~0x00000004);
                    } else {
                      ensureByHeroTargetsIsMutable();
                      byHeroTargets_.addAll(other.byHeroTargets_);
                    }
                    onChanged();
                  }
                } else {
                  if (!other.byHeroTargets_.isEmpty()) {
                    if (byHeroTargetsBuilder_.isEmpty()) {
                      byHeroTargetsBuilder_.dispose();
                      byHeroTargetsBuilder_ = null;
                      byHeroTargets_ = other.byHeroTargets_;
                      bitField0_ = (bitField0_ & ~0x00000004);
                      byHeroTargetsBuilder_ = 
                        com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                           getByHeroTargetsFieldBuilder() : null;
                    } else {
                      byHeroTargetsBuilder_.addAllMessages(other.byHeroTargets_);
                    }
                  }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                return this;
              }

              public final boolean isInitialized() {
                return true;
              }

              public Builder mergeFrom(
                  com.google.protobuf.CodedInputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parsedMessage = null;
                try {
                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                  parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility) e.getUnfinishedMessage();
                  throw e;
                } finally {
                  if (parsedMessage != null) {
                    mergeFrom(parsedMessage);
                  }
                }
                return this;
              }
              private int bitField0_;

              private int sourceUnitIndex_ ;
              /**
               * optional uint32 source_unit_index = 3;
               */
              public boolean hasSourceUnitIndex() {
                return ((bitField0_ & 0x00000001) == 0x00000001);
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public int getSourceUnitIndex() {
                return sourceUnitIndex_;
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public Builder setSourceUnitIndex(int value) {
                bitField0_ |= 0x00000001;
                sourceUnitIndex_ = value;
                onChanged();
                return this;
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public Builder clearSourceUnitIndex() {
                bitField0_ = (bitField0_ & ~0x00000001);
                sourceUnitIndex_ = 0;
                onChanged();
                return this;
              }

              private int abilityId_ ;
              /**
               * optional uint32 ability_id = 1;
               */
              public boolean hasAbilityId() {
                return ((bitField0_ & 0x00000002) == 0x00000002);
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public int getAbilityId() {
                return abilityId_;
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public Builder setAbilityId(int value) {
                bitField0_ |= 0x00000002;
                abilityId_ = value;
                onChanged();
                return this;
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public Builder clearAbilityId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                abilityId_ = 0;
                onChanged();
                return this;
              }

              private java.util.List byHeroTargets_ =
                java.util.Collections.emptyList();
              private void ensureByHeroTargetsIsMutable() {
                if (!((bitField0_ & 0x00000004) == 0x00000004)) {
                  byHeroTargets_ = new java.util.ArrayList(byHeroTargets_);
                  bitField0_ |= 0x00000004;
                 }
              }

              private com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder> byHeroTargetsBuilder_;

              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List getByHeroTargetsList() {
                if (byHeroTargetsBuilder_ == null) {
                  return java.util.Collections.unmodifiableList(byHeroTargets_);
                } else {
                  return byHeroTargetsBuilder_.getMessageList();
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public int getByHeroTargetsCount() {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.size();
                } else {
                  return byHeroTargetsBuilder_.getCount();
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget getByHeroTargets(int index) {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.get(index);
                } else {
                  return byHeroTargetsBuilder_.getMessage(index);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder setByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.set(index, value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.setMessage(index, value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder setByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.set(index, builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(index, value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(index, value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(index, builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addAllByHeroTargets(
                  java.lang.Iterable values) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  com.google.protobuf.AbstractMessageLite.Builder.addAll(
                      values, byHeroTargets_);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addAllMessages(values);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder clearByHeroTargets() {
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargets_ = java.util.Collections.emptyList();
                  bitField0_ = (bitField0_ & ~0x00000004);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.clear();
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder removeByHeroTargets(int index) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.remove(index);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.remove(index);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder getByHeroTargetsBuilder(
                  int index) {
                return getByHeroTargetsFieldBuilder().getBuilder(index);
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                  int index) {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.get(index);  } else {
                  return byHeroTargetsBuilder_.getMessageOrBuilder(index);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List 
                   getByHeroTargetsOrBuilderList() {
                if (byHeroTargetsBuilder_ != null) {
                  return byHeroTargetsBuilder_.getMessageOrBuilderList();
                } else {
                  return java.util.Collections.unmodifiableList(byHeroTargets_);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder addByHeroTargetsBuilder() {
                return getByHeroTargetsFieldBuilder().addBuilder(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.getDefaultInstance());
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder addByHeroTargetsBuilder(
                  int index) {
                return getByHeroTargetsFieldBuilder().addBuilder(
                    index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.getDefaultInstance());
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List 
                   getByHeroTargetsBuilderList() {
                return getByHeroTargetsFieldBuilder().getBuilderList();
              }
              private com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder> 
                  getByHeroTargetsFieldBuilder() {
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder>(
                          byHeroTargets_,
                          ((bitField0_ & 0x00000004) == 0x00000004),
                          getParentForChildren(),
                          isClean());
                  byHeroTargets_ = null;
                }
                return byHeroTargetsBuilder_;
              }

              // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
            }

            static {
              defaultInstance = new DamageByAbility(true);
              defaultInstance.initFields();
            }

            // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
          }

          private int bitField0_;
          public static final int GAME_TIME_FIELD_NUMBER = 1;
          private int gameTime_;
          /**
           * optional int32 game_time = 1;
           */
          public boolean hasGameTime() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional int32 game_time = 1;
           */
          public int getGameTime() {
            return gameTime_;
          }

          public static final int DAMAGE_BY_ABILITY_FIELD_NUMBER = 2;
          private java.util.List damageByAbility_;
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public java.util.List getDamageByAbilityList() {
            return damageByAbility_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public java.util.List 
              getDamageByAbilityOrBuilderList() {
            return damageByAbility_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public int getDamageByAbilityCount() {
            return damageByAbility_.size();
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility getDamageByAbility(int index) {
            return damageByAbility_.get(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder getDamageByAbilityOrBuilder(
              int index) {
            return damageByAbility_.get(index);
          }

          private void initFields() {
            gameTime_ = 0;
            damageByAbility_ = java.util.Collections.emptyList();
          }
          private byte memoizedIsInitialized = -1;
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            getSerializedSize();
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              output.writeInt32(1, gameTime_);
            }
            for (int i = 0; i < damageByAbility_.size(); i++) {
              output.writeMessage(2, damageByAbility_.get(i));
            }
            getUnknownFields().writeTo(output);
          }

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

            size = 0;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              size += com.google.protobuf.CodedOutputStream
                .computeInt32Size(1, gameTime_);
            }
            for (int i = 0; i < damageByAbility_.size(); i++) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(2, damageByAbility_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSerializedSize = size;
            return size;
          }

          private static final long serialVersionUID = 0L;
          @java.lang.Override
          protected java.lang.Object writeReplace()
              throws java.io.ObjectStreamException {
            return super.writeReplace();
          }

          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }

          public static Builder newBuilder() { return Builder.create(); }
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment prototype) {
            return newBuilder().mergeFrom(prototype);
          }
          public Builder toBuilder() { return newBuilder(this); }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder implements
              // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder.class);
            }

            // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                getDamageByAbilityFieldBuilder();
              }
            }
            private static Builder create() {
              return new Builder();
            }

            public Builder clear() {
              super.clear();
              gameTime_ = 0;
              bitField0_ = (bitField0_ & ~0x00000001);
              if (damageByAbilityBuilder_ == null) {
                damageByAbility_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                damageByAbilityBuilder_.clear();
              }
              return this;
            }

            public Builder clone() {
              return create().mergeFrom(buildPartial());
            }

            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment getDefaultInstanceForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.getDefaultInstance();
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment build() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment buildPartial() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment(this);
              int from_bitField0_ = bitField0_;
              int to_bitField0_ = 0;
              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                to_bitField0_ |= 0x00000001;
              }
              result.gameTime_ = gameTime_;
              if (damageByAbilityBuilder_ == null) {
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  damageByAbility_ = java.util.Collections.unmodifiableList(damageByAbility_);
                  bitField0_ = (bitField0_ & ~0x00000002);
                }
                result.damageByAbility_ = damageByAbility_;
              } else {
                result.damageByAbility_ = damageByAbilityBuilder_.build();
              }
              result.bitField0_ = to_bitField0_;
              onBuilt();
              return result;
            }

            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment) {
                return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment other) {
              if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.getDefaultInstance()) return this;
              if (other.hasGameTime()) {
                setGameTime(other.getGameTime());
              }
              if (damageByAbilityBuilder_ == null) {
                if (!other.damageByAbility_.isEmpty()) {
                  if (damageByAbility_.isEmpty()) {
                    damageByAbility_ = other.damageByAbility_;
                    bitField0_ = (bitField0_ & ~0x00000002);
                  } else {
                    ensureDamageByAbilityIsMutable();
                    damageByAbility_.addAll(other.damageByAbility_);
                  }
                  onChanged();
                }
              } else {
                if (!other.damageByAbility_.isEmpty()) {
                  if (damageByAbilityBuilder_.isEmpty()) {
                    damageByAbilityBuilder_.dispose();
                    damageByAbilityBuilder_ = null;
                    damageByAbility_ = other.damageByAbility_;
                    bitField0_ = (bitField0_ & ~0x00000002);
                    damageByAbilityBuilder_ = 
                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                         getDamageByAbilityFieldBuilder() : null;
                  } else {
                    damageByAbilityBuilder_.addAllMessages(other.damageByAbility_);
                  }
                }
              }
              this.mergeUnknownFields(other.getUnknownFields());
              return this;
            }

            public final boolean isInitialized() {
              return true;
            }

            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private int gameTime_ ;
            /**
             * optional int32 game_time = 1;
             */
            public boolean hasGameTime() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional int32 game_time = 1;
             */
            public int getGameTime() {
              return gameTime_;
            }
            /**
             * optional int32 game_time = 1;
             */
            public Builder setGameTime(int value) {
              bitField0_ |= 0x00000001;
              gameTime_ = value;
              onChanged();
              return this;
            }
            /**
             * optional int32 game_time = 1;
             */
            public Builder clearGameTime() {
              bitField0_ = (bitField0_ & ~0x00000001);
              gameTime_ = 0;
              onChanged();
              return this;
            }

            private java.util.List damageByAbility_ =
              java.util.Collections.emptyList();
            private void ensureDamageByAbilityIsMutable() {
              if (!((bitField0_ & 0x00000002) == 0x00000002)) {
                damageByAbility_ = new java.util.ArrayList(damageByAbility_);
                bitField0_ |= 0x00000002;
               }
            }

            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder> damageByAbilityBuilder_;

            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public java.util.List getDamageByAbilityList() {
              if (damageByAbilityBuilder_ == null) {
                return java.util.Collections.unmodifiableList(damageByAbility_);
              } else {
                return damageByAbilityBuilder_.getMessageList();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public int getDamageByAbilityCount() {
              if (damageByAbilityBuilder_ == null) {
                return damageByAbility_.size();
              } else {
                return damageByAbilityBuilder_.getCount();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility getDamageByAbility(int index) {
              if (damageByAbilityBuilder_ == null) {
                return damageByAbility_.get(index);
              } else {
                return damageByAbilityBuilder_.getMessage(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder setDamageByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility value) {
              if (damageByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureDamageByAbilityIsMutable();
                damageByAbility_.set(index, value);
                onChanged();
              } else {
                damageByAbilityBuilder_.setMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder setDamageByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder builderForValue) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                damageByAbility_.set(index, builderForValue.build());
                onChanged();
              } else {
                damageByAbilityBuilder_.setMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addDamageByAbility(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility value) {
              if (damageByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureDamageByAbilityIsMutable();
                damageByAbility_.add(value);
                onChanged();
              } else {
                damageByAbilityBuilder_.addMessage(value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addDamageByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility value) {
              if (damageByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureDamageByAbilityIsMutable();
                damageByAbility_.add(index, value);
                onChanged();
              } else {
                damageByAbilityBuilder_.addMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addDamageByAbility(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder builderForValue) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                damageByAbility_.add(builderForValue.build());
                onChanged();
              } else {
                damageByAbilityBuilder_.addMessage(builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addDamageByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder builderForValue) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                damageByAbility_.add(index, builderForValue.build());
                onChanged();
              } else {
                damageByAbilityBuilder_.addMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addAllDamageByAbility(
                java.lang.Iterable values) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, damageByAbility_);
                onChanged();
              } else {
                damageByAbilityBuilder_.addAllMessages(values);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder clearDamageByAbility() {
              if (damageByAbilityBuilder_ == null) {
                damageByAbility_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
              } else {
                damageByAbilityBuilder_.clear();
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder removeDamageByAbility(int index) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                damageByAbility_.remove(index);
                onChanged();
              } else {
                damageByAbilityBuilder_.remove(index);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder getDamageByAbilityBuilder(
                int index) {
              return getDamageByAbilityFieldBuilder().getBuilder(index);
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder getDamageByAbilityOrBuilder(
                int index) {
              if (damageByAbilityBuilder_ == null) {
                return damageByAbility_.get(index);  } else {
                return damageByAbilityBuilder_.getMessageOrBuilder(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public java.util.List 
                 getDamageByAbilityOrBuilderList() {
              if (damageByAbilityBuilder_ != null) {
                return damageByAbilityBuilder_.getMessageOrBuilderList();
              } else {
                return java.util.Collections.unmodifiableList(damageByAbility_);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder addDamageByAbilityBuilder() {
              return getDamageByAbilityFieldBuilder().addBuilder(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder addDamageByAbilityBuilder(
                int index) {
              return getDamageByAbilityFieldBuilder().addBuilder(
                  index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public java.util.List 
                 getDamageByAbilityBuilderList() {
              return getDamageByAbilityFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder> 
                getDamageByAbilityFieldBuilder() {
              if (damageByAbilityBuilder_ == null) {
                damageByAbilityBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder>(
                        damageByAbility_,
                        ((bitField0_ & 0x00000002) == 0x00000002),
                        getParentForChildren(),
                        isClean());
                damageByAbility_ = null;
              }
              return damageByAbilityBuilder_;
            }

            // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
          }

          static {
            defaultInstance = new CombatSegment(true);
            defaultInstance.initFields();
          }

          // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
        }

        public interface BuffRecordOrBuilder extends
            // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
            com.google.protobuf.MessageOrBuilder {

          /**
           * optional uint32 buff_ability_id = 1;
           */
          boolean hasBuffAbilityId();
          /**
           * optional uint32 buff_ability_id = 1;
           */
          int getBuffAbilityId();

          /**
           * optional string buff_modifier_name = 3;
           */
          boolean hasBuffModifierName();
          /**
           * optional string buff_modifier_name = 3;
           */
          java.lang.String getBuffModifierName();
          /**
           * optional string buff_modifier_name = 3;
           */
          com.google.protobuf.ByteString
              getBuffModifierNameBytes();

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          java.util.List 
              getByHeroTargetsList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget getByHeroTargets(int index);
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          int getByHeroTargetsCount();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          java.util.List 
              getByHeroTargetsOrBuilderList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
              int index);
        }
        /**
         * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.BuffRecord}
         */
        public static final class BuffRecord extends
            com.google.protobuf.GeneratedMessage implements
            // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
            BuffRecordOrBuilder {
          // Use BuffRecord.newBuilder() to construct.
          private BuffRecord(com.google.protobuf.GeneratedMessage.Builder builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private BuffRecord(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

          private static final BuffRecord defaultInstance;
          public static BuffRecord getDefaultInstance() {
            return defaultInstance;
          }

          public BuffRecord getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private BuffRecord(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            initFields();
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!parseUnknownField(input, unknownFields,
                                           extensionRegistry, tag)) {
                      done = true;
                    }
                    break;
                  }
                  case 8: {
                    bitField0_ |= 0x00000001;
                    buffAbilityId_ = input.readUInt32();
                    break;
                  }
                  case 18: {
                    if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                      byHeroTargets_ = new java.util.ArrayList();
                      mutable_bitField0_ |= 0x00000004;
                    }
                    byHeroTargets_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.PARSER, extensionRegistry));
                    break;
                  }
                  case 26: {
                    com.google.protobuf.ByteString bs = input.readBytes();
                    bitField0_ |= 0x00000002;
                    buffModifierName_ = bs;
                    break;
                  }
                }
              }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(
                  e.getMessage()).setUnfinishedMessage(this);
            } finally {
              if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
              }
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder.class);
          }

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

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

          public interface ByHeroTargetOrBuilder extends
              // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
              com.google.protobuf.MessageOrBuilder {

            /**
             * optional uint32 hero_id = 1;
             */
            boolean hasHeroId();
            /**
             * optional uint32 hero_id = 1;
             */
            int getHeroId();

            /**
             * optional float elapsed_duration = 2;
             */
            boolean hasElapsedDuration();
            /**
             * optional float elapsed_duration = 2;
             */
            float getElapsedDuration();

            /**
             * optional bool is_hidden = 3;
             */
            boolean hasIsHidden();
            /**
             * optional bool is_hidden = 3;
             */
            boolean getIsHidden();
          }
          /**
           * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget}
           */
          public static final class ByHeroTarget extends
              com.google.protobuf.GeneratedMessage implements
              // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
              ByHeroTargetOrBuilder {
            // Use ByHeroTarget.newBuilder() to construct.
            private ByHeroTarget(com.google.protobuf.GeneratedMessage.Builder builder) {
              super(builder);
              this.unknownFields = builder.getUnknownFields();
            }
            private ByHeroTarget(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

            private static final ByHeroTarget defaultInstance;
            public static ByHeroTarget getDefaultInstance() {
              return defaultInstance;
            }

            public ByHeroTarget getDefaultInstanceForType() {
              return defaultInstance;
            }

            private final com.google.protobuf.UnknownFieldSet unknownFields;
            @java.lang.Override
            public final com.google.protobuf.UnknownFieldSet
                getUnknownFields() {
              return this.unknownFields;
            }
            private ByHeroTarget(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              initFields();
              int mutable_bitField0_ = 0;
              com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                  com.google.protobuf.UnknownFieldSet.newBuilder();
              try {
                boolean done = false;
                while (!done) {
                  int tag = input.readTag();
                  switch (tag) {
                    case 0:
                      done = true;
                      break;
                    default: {
                      if (!parseUnknownField(input, unknownFields,
                                             extensionRegistry, tag)) {
                        done = true;
                      }
                      break;
                    }
                    case 8: {
                      bitField0_ |= 0x00000001;
                      heroId_ = input.readUInt32();
                      break;
                    }
                    case 21: {
                      bitField0_ |= 0x00000002;
                      elapsedDuration_ = input.readFloat();
                      break;
                    }
                    case 24: {
                      bitField0_ |= 0x00000004;
                      isHidden_ = input.readBool();
                      break;
                    }
                  }
                }
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
              } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this);
              } finally {
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
              }
            }
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder.class);
            }

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

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

            private int bitField0_;
            public static final int HERO_ID_FIELD_NUMBER = 1;
            private int heroId_;
            /**
             * optional uint32 hero_id = 1;
             */
            public boolean hasHeroId() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 hero_id = 1;
             */
            public int getHeroId() {
              return heroId_;
            }

            public static final int ELAPSED_DURATION_FIELD_NUMBER = 2;
            private float elapsedDuration_;
            /**
             * optional float elapsed_duration = 2;
             */
            public boolean hasElapsedDuration() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional float elapsed_duration = 2;
             */
            public float getElapsedDuration() {
              return elapsedDuration_;
            }

            public static final int IS_HIDDEN_FIELD_NUMBER = 3;
            private boolean isHidden_;
            /**
             * optional bool is_hidden = 3;
             */
            public boolean hasIsHidden() {
              return ((bitField0_ & 0x00000004) == 0x00000004);
            }
            /**
             * optional bool is_hidden = 3;
             */
            public boolean getIsHidden() {
              return isHidden_;
            }

            private void initFields() {
              heroId_ = 0;
              elapsedDuration_ = 0F;
              isHidden_ = false;
            }
            private byte memoizedIsInitialized = -1;
            public final boolean isInitialized() {
              byte isInitialized = memoizedIsInitialized;
              if (isInitialized == 1) return true;
              if (isInitialized == 0) return false;

              memoizedIsInitialized = 1;
              return true;
            }

            public void writeTo(com.google.protobuf.CodedOutputStream output)
                                throws java.io.IOException {
              getSerializedSize();
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                output.writeUInt32(1, heroId_);
              }
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                output.writeFloat(2, elapsedDuration_);
              }
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                output.writeBool(3, isHidden_);
              }
              getUnknownFields().writeTo(output);
            }

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

              size = 0;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32Size(1, heroId_);
              }
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeFloatSize(2, elapsedDuration_);
              }
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeBoolSize(3, isHidden_);
              }
              size += getUnknownFields().getSerializedSize();
              memoizedSerializedSize = size;
              return size;
            }

            private static final long serialVersionUID = 0L;
            @java.lang.Override
            protected java.lang.Object writeReplace()
                throws java.io.ObjectStreamException {
              return super.writeReplace();
            }

            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseFrom(input, extensionRegistry);
            }

            public static Builder newBuilder() { return Builder.create(); }
            public Builder newBuilderForType() { return newBuilder(); }
            public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget prototype) {
              return newBuilder().mergeFrom(prototype);
            }
            public Builder toBuilder() { return newBuilder(this); }

            @java.lang.Override
            protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
              Builder builder = new Builder(parent);
              return builder;
            }
            /**
             * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget}
             */
            public static final class Builder extends
                com.google.protobuf.GeneratedMessage.Builder implements
                // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder {
              public static final com.google.protobuf.Descriptors.Descriptor
                  getDescriptor() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor;
              }

              protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                  internalGetFieldAccessorTable() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder.class);
              }

              // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.newBuilder()
              private Builder() {
                maybeForceBuilderInitialization();
              }

              private Builder(
                  com.google.protobuf.GeneratedMessage.BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
              }
              private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                }
              }
              private static Builder create() {
                return new Builder();
              }

              public Builder clear() {
                super.clear();
                heroId_ = 0;
                bitField0_ = (bitField0_ & ~0x00000001);
                elapsedDuration_ = 0F;
                bitField0_ = (bitField0_ & ~0x00000002);
                isHidden_ = false;
                bitField0_ = (bitField0_ & ~0x00000004);
                return this;
              }

              public Builder clone() {
                return create().mergeFrom(buildPartial());
              }

              public com.google.protobuf.Descriptors.Descriptor
                  getDescriptorForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget getDefaultInstanceForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.getDefaultInstance();
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget build() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget result = buildPartial();
                if (!result.isInitialized()) {
                  throw newUninitializedMessageException(result);
                }
                return result;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget buildPartial() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget(this);
                int from_bitField0_ = bitField0_;
                int to_bitField0_ = 0;
                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                  to_bitField0_ |= 0x00000001;
                }
                result.heroId_ = heroId_;
                if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                  to_bitField0_ |= 0x00000002;
                }
                result.elapsedDuration_ = elapsedDuration_;
                if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
                  to_bitField0_ |= 0x00000004;
                }
                result.isHidden_ = isHidden_;
                result.bitField0_ = to_bitField0_;
                onBuilt();
                return result;
              }

              public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget) {
                  return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)other);
                } else {
                  super.mergeFrom(other);
                  return this;
                }
              }

              public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget other) {
                if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.getDefaultInstance()) return this;
                if (other.hasHeroId()) {
                  setHeroId(other.getHeroId());
                }
                if (other.hasElapsedDuration()) {
                  setElapsedDuration(other.getElapsedDuration());
                }
                if (other.hasIsHidden()) {
                  setIsHidden(other.getIsHidden());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                return this;
              }

              public final boolean isInitialized() {
                return true;
              }

              public Builder mergeFrom(
                  com.google.protobuf.CodedInputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parsedMessage = null;
                try {
                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                  parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget) e.getUnfinishedMessage();
                  throw e;
                } finally {
                  if (parsedMessage != null) {
                    mergeFrom(parsedMessage);
                  }
                }
                return this;
              }
              private int bitField0_;

              private int heroId_ ;
              /**
               * optional uint32 hero_id = 1;
               */
              public boolean hasHeroId() {
                return ((bitField0_ & 0x00000001) == 0x00000001);
              }
              /**
               * optional uint32 hero_id = 1;
               */
              public int getHeroId() {
                return heroId_;
              }
              /**
               * optional uint32 hero_id = 1;
               */
              public Builder setHeroId(int value) {
                bitField0_ |= 0x00000001;
                heroId_ = value;
                onChanged();
                return this;
              }
              /**
               * optional uint32 hero_id = 1;
               */
              public Builder clearHeroId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                heroId_ = 0;
                onChanged();
                return this;
              }

              private float elapsedDuration_ ;
              /**
               * optional float elapsed_duration = 2;
               */
              public boolean hasElapsedDuration() {
                return ((bitField0_ & 0x00000002) == 0x00000002);
              }
              /**
               * optional float elapsed_duration = 2;
               */
              public float getElapsedDuration() {
                return elapsedDuration_;
              }
              /**
               * optional float elapsed_duration = 2;
               */
              public Builder setElapsedDuration(float value) {
                bitField0_ |= 0x00000002;
                elapsedDuration_ = value;
                onChanged();
                return this;
              }
              /**
               * optional float elapsed_duration = 2;
               */
              public Builder clearElapsedDuration() {
                bitField0_ = (bitField0_ & ~0x00000002);
                elapsedDuration_ = 0F;
                onChanged();
                return this;
              }

              private boolean isHidden_ ;
              /**
               * optional bool is_hidden = 3;
               */
              public boolean hasIsHidden() {
                return ((bitField0_ & 0x00000004) == 0x00000004);
              }
              /**
               * optional bool is_hidden = 3;
               */
              public boolean getIsHidden() {
                return isHidden_;
              }
              /**
               * optional bool is_hidden = 3;
               */
              public Builder setIsHidden(boolean value) {
                bitField0_ |= 0x00000004;
                isHidden_ = value;
                onChanged();
                return this;
              }
              /**
               * optional bool is_hidden = 3;
               */
              public Builder clearIsHidden() {
                bitField0_ = (bitField0_ & ~0x00000004);
                isHidden_ = false;
                onChanged();
                return this;
              }

              // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
            }

            static {
              defaultInstance = new ByHeroTarget(true);
              defaultInstance.initFields();
            }

            // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
          }

          private int bitField0_;
          public static final int BUFF_ABILITY_ID_FIELD_NUMBER = 1;
          private int buffAbilityId_;
          /**
           * optional uint32 buff_ability_id = 1;
           */
          public boolean hasBuffAbilityId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 buff_ability_id = 1;
           */
          public int getBuffAbilityId() {
            return buffAbilityId_;
          }

          public static final int BUFF_MODIFIER_NAME_FIELD_NUMBER = 3;
          private java.lang.Object buffModifierName_;
          /**
           * optional string buff_modifier_name = 3;
           */
          public boolean hasBuffModifierName() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional string buff_modifier_name = 3;
           */
          public java.lang.String getBuffModifierName() {
            java.lang.Object ref = buffModifierName_;
            if (ref instanceof java.lang.String) {
              return (java.lang.String) ref;
            } else {
              com.google.protobuf.ByteString bs = 
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                buffModifierName_ = s;
              }
              return s;
            }
          }
          /**
           * optional string buff_modifier_name = 3;
           */
          public com.google.protobuf.ByteString
              getBuffModifierNameBytes() {
            java.lang.Object ref = buffModifierName_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              buffModifierName_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int BY_HERO_TARGETS_FIELD_NUMBER = 2;
          private java.util.List byHeroTargets_;
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public java.util.List getByHeroTargetsList() {
            return byHeroTargets_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public java.util.List 
              getByHeroTargetsOrBuilderList() {
            return byHeroTargets_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public int getByHeroTargetsCount() {
            return byHeroTargets_.size();
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget getByHeroTargets(int index) {
            return byHeroTargets_.get(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
              int index) {
            return byHeroTargets_.get(index);
          }

          private void initFields() {
            buffAbilityId_ = 0;
            buffModifierName_ = "";
            byHeroTargets_ = java.util.Collections.emptyList();
          }
          private byte memoizedIsInitialized = -1;
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            getSerializedSize();
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              output.writeUInt32(1, buffAbilityId_);
            }
            for (int i = 0; i < byHeroTargets_.size(); i++) {
              output.writeMessage(2, byHeroTargets_.get(i));
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              output.writeBytes(3, getBuffModifierNameBytes());
            }
            getUnknownFields().writeTo(output);
          }

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

            size = 0;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(1, buffAbilityId_);
            }
            for (int i = 0; i < byHeroTargets_.size(); i++) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(2, byHeroTargets_.get(i));
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              size += com.google.protobuf.CodedOutputStream
                .computeBytesSize(3, getBuffModifierNameBytes());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSerializedSize = size;
            return size;
          }

          private static final long serialVersionUID = 0L;
          @java.lang.Override
          protected java.lang.Object writeReplace()
              throws java.io.ObjectStreamException {
            return super.writeReplace();
          }

          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }

          public static Builder newBuilder() { return Builder.create(); }
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord prototype) {
            return newBuilder().mergeFrom(prototype);
          }
          public Builder toBuilder() { return newBuilder(this); }

          @java.lang.Override
          protected Builder newBuilderForType(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
          }
          /**
           * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.BuffRecord}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder implements
              // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder.class);
            }

            // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

            private Builder(
                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
              super(parent);
              maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                getByHeroTargetsFieldBuilder();
              }
            }
            private static Builder create() {
              return new Builder();
            }

            public Builder clear() {
              super.clear();
              buffAbilityId_ = 0;
              bitField0_ = (bitField0_ & ~0x00000001);
              buffModifierName_ = "";
              bitField0_ = (bitField0_ & ~0x00000002);
              if (byHeroTargetsBuilder_ == null) {
                byHeroTargets_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                byHeroTargetsBuilder_.clear();
              }
              return this;
            }

            public Builder clone() {
              return create().mergeFrom(buildPartial());
            }

            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord getDefaultInstanceForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.getDefaultInstance();
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord build() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buildPartial() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord(this);
              int from_bitField0_ = bitField0_;
              int to_bitField0_ = 0;
              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                to_bitField0_ |= 0x00000001;
              }
              result.buffAbilityId_ = buffAbilityId_;
              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                to_bitField0_ |= 0x00000002;
              }
              result.buffModifierName_ = buffModifierName_;
              if (byHeroTargetsBuilder_ == null) {
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
                  bitField0_ = (bitField0_ & ~0x00000004);
                }
                result.byHeroTargets_ = byHeroTargets_;
              } else {
                result.byHeroTargets_ = byHeroTargetsBuilder_.build();
              }
              result.bitField0_ = to_bitField0_;
              onBuilt();
              return result;
            }

            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord) {
                return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord other) {
              if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.getDefaultInstance()) return this;
              if (other.hasBuffAbilityId()) {
                setBuffAbilityId(other.getBuffAbilityId());
              }
              if (other.hasBuffModifierName()) {
                bitField0_ |= 0x00000002;
                buffModifierName_ = other.buffModifierName_;
                onChanged();
              }
              if (byHeroTargetsBuilder_ == null) {
                if (!other.byHeroTargets_.isEmpty()) {
                  if (byHeroTargets_.isEmpty()) {
                    byHeroTargets_ = other.byHeroTargets_;
                    bitField0_ = (bitField0_ & ~0x00000004);
                  } else {
                    ensureByHeroTargetsIsMutable();
                    byHeroTargets_.addAll(other.byHeroTargets_);
                  }
                  onChanged();
                }
              } else {
                if (!other.byHeroTargets_.isEmpty()) {
                  if (byHeroTargetsBuilder_.isEmpty()) {
                    byHeroTargetsBuilder_.dispose();
                    byHeroTargetsBuilder_ = null;
                    byHeroTargets_ = other.byHeroTargets_;
                    bitField0_ = (bitField0_ & ~0x00000004);
                    byHeroTargetsBuilder_ = 
                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                         getByHeroTargetsFieldBuilder() : null;
                  } else {
                    byHeroTargetsBuilder_.addAllMessages(other.byHeroTargets_);
                  }
                }
              }
              this.mergeUnknownFields(other.getUnknownFields());
              return this;
            }

            public final boolean isInitialized() {
              return true;
            }

            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private int buffAbilityId_ ;
            /**
             * optional uint32 buff_ability_id = 1;
             */
            public boolean hasBuffAbilityId() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 buff_ability_id = 1;
             */
            public int getBuffAbilityId() {
              return buffAbilityId_;
            }
            /**
             * optional uint32 buff_ability_id = 1;
             */
            public Builder setBuffAbilityId(int value) {
              bitField0_ |= 0x00000001;
              buffAbilityId_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 buff_ability_id = 1;
             */
            public Builder clearBuffAbilityId() {
              bitField0_ = (bitField0_ & ~0x00000001);
              buffAbilityId_ = 0;
              onChanged();
              return this;
            }

            private java.lang.Object buffModifierName_ = "";
            /**
             * optional string buff_modifier_name = 3;
             */
            public boolean hasBuffModifierName() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public java.lang.String getBuffModifierName() {
              java.lang.Object ref = buffModifierName_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                if (bs.isValidUtf8()) {
                  buffModifierName_ = s;
                }
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public com.google.protobuf.ByteString
                getBuffModifierNameBytes() {
              java.lang.Object ref = buffModifierName_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                buffModifierName_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public Builder setBuffModifierName(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
              buffModifierName_ = value;
              onChanged();
              return this;
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public Builder clearBuffModifierName() {
              bitField0_ = (bitField0_ & ~0x00000002);
              buffModifierName_ = getDefaultInstance().getBuffModifierName();
              onChanged();
              return this;
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public Builder setBuffModifierNameBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
              buffModifierName_ = value;
              onChanged();
              return this;
            }

            private java.util.List byHeroTargets_ =
              java.util.Collections.emptyList();
            private void ensureByHeroTargetsIsMutable() {
              if (!((bitField0_ & 0x00000004) == 0x00000004)) {
                byHeroTargets_ = new java.util.ArrayList(byHeroTargets_);
                bitField0_ |= 0x00000004;
               }
            }

            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder> byHeroTargetsBuilder_;

            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List getByHeroTargetsList() {
              if (byHeroTargetsBuilder_ == null) {
                return java.util.Collections.unmodifiableList(byHeroTargets_);
              } else {
                return byHeroTargetsBuilder_.getMessageList();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public int getByHeroTargetsCount() {
              if (byHeroTargetsBuilder_ == null) {
                return byHeroTargets_.size();
              } else {
                return byHeroTargetsBuilder_.getCount();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget getByHeroTargets(int index) {
              if (byHeroTargetsBuilder_ == null) {
                return byHeroTargets_.get(index);
              } else {
                return byHeroTargetsBuilder_.getMessage(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder setByHeroTargets(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget value) {
              if (byHeroTargetsBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.set(index, value);
                onChanged();
              } else {
                byHeroTargetsBuilder_.setMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder setByHeroTargets(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder builderForValue) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.set(index, builderForValue.build());
                onChanged();
              } else {
                byHeroTargetsBuilder_.setMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addByHeroTargets(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget value) {
              if (byHeroTargetsBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.add(value);
                onChanged();
              } else {
                byHeroTargetsBuilder_.addMessage(value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addByHeroTargets(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget value) {
              if (byHeroTargetsBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.add(index, value);
                onChanged();
              } else {
                byHeroTargetsBuilder_.addMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addByHeroTargets(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder builderForValue) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.add(builderForValue.build());
                onChanged();
              } else {
                byHeroTargetsBuilder_.addMessage(builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addByHeroTargets(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder builderForValue) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.add(index, builderForValue.build());
                onChanged();
              } else {
                byHeroTargetsBuilder_.addMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addAllByHeroTargets(
                java.lang.Iterable values) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, byHeroTargets_);
                onChanged();
              } else {
                byHeroTargetsBuilder_.addAllMessages(values);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder clearByHeroTargets() {
              if (byHeroTargetsBuilder_ == null) {
                byHeroTargets_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
              } else {
                byHeroTargetsBuilder_.clear();
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder removeByHeroTargets(int index) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.remove(index);
                onChanged();
              } else {
                byHeroTargetsBuilder_.remove(index);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder getByHeroTargetsBuilder(
                int index) {
              return getByHeroTargetsFieldBuilder().getBuilder(index);
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                int index) {
              if (byHeroTargetsBuilder_ == null) {
                return byHeroTargets_.get(index);  } else {
                return byHeroTargetsBuilder_.getMessageOrBuilder(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List 
                 getByHeroTargetsOrBuilderList() {
              if (byHeroTargetsBuilder_ != null) {
                return byHeroTargetsBuilder_.getMessageOrBuilderList();
              } else {
                return java.util.Collections.unmodifiableList(byHeroTargets_);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder addByHeroTargetsBuilder() {
              return getByHeroTargetsFieldBuilder().addBuilder(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder addByHeroTargetsBuilder(
                int index) {
              return getByHeroTargetsFieldBuilder().addBuilder(
                  index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List 
                 getByHeroTargetsBuilderList() {
              return getByHeroTargetsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder> 
                getByHeroTargetsFieldBuilder() {
              if (byHeroTargetsBuilder_ == null) {
                byHeroTargetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder>(
                        byHeroTargets_,
                        ((bitField0_ & 0x00000004) == 0x00000004),
                        getParentForChildren(),
                        isClean());
                byHeroTargets_ = null;
              }
              return byHeroTargetsBuilder_;
            }

            // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
          }

          static {
            defaultInstance = new BuffRecord(true);
            defaultInstance.initFields();
          }

          // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
        }

        private int bitField0_;
        public static final int ACCOUNT_ID_FIELD_NUMBER = 1;
        private int accountId_;
        /**
         * optional uint32 account_id = 1;
         */
        public boolean hasAccountId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 account_id = 1;
         */
        public int getAccountId() {
          return accountId_;
        }

        public static final int PLAYER_SLOT_FIELD_NUMBER = 2;
        private int playerSlot_;
        /**
         * optional uint32 player_slot = 2;
         */
        public boolean hasPlayerSlot() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 player_slot = 2;
         */
        public int getPlayerSlot() {
          return playerSlot_;
        }

        public static final int POSITION_STREAM_FIELD_NUMBER = 3;
        private com.google.protobuf.ByteString positionStream_;
        /**
         * optional bytes position_stream = 3;
         */
        public boolean hasPositionStream() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional bytes position_stream = 3;
         */
        public com.google.protobuf.ByteString getPositionStream() {
          return positionStream_;
        }

        public static final int COMBAT_SEGMENTS_FIELD_NUMBER = 4;
        private java.util.List combatSegments_;
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public java.util.List getCombatSegmentsList() {
          return combatSegments_;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public java.util.List 
            getCombatSegmentsOrBuilderList() {
          return combatSegments_;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public int getCombatSegmentsCount() {
          return combatSegments_.size();
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment getCombatSegments(int index) {
          return combatSegments_.get(index);
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder getCombatSegmentsOrBuilder(
            int index) {
          return combatSegments_.get(index);
        }

        public static final int DAMAGE_UNIT_NAMES_FIELD_NUMBER = 5;
        private com.google.protobuf.LazyStringList damageUnitNames_;
        /**
         * repeated string damage_unit_names = 5;
         */
        public com.google.protobuf.ProtocolStringList
            getDamageUnitNamesList() {
          return damageUnitNames_;
        }
        /**
         * repeated string damage_unit_names = 5;
         */
        public int getDamageUnitNamesCount() {
          return damageUnitNames_.size();
        }
        /**
         * repeated string damage_unit_names = 5;
         */
        public java.lang.String getDamageUnitNames(int index) {
          return damageUnitNames_.get(index);
        }
        /**
         * repeated string damage_unit_names = 5;
         */
        public com.google.protobuf.ByteString
            getDamageUnitNamesBytes(int index) {
          return damageUnitNames_.getByteString(index);
        }

        public static final int BUFF_RECORDS_FIELD_NUMBER = 6;
        private java.util.List buffRecords_;
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public java.util.List getBuffRecordsList() {
          return buffRecords_;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public java.util.List 
            getBuffRecordsOrBuilderList() {
          return buffRecords_;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public int getBuffRecordsCount() {
          return buffRecords_.size();
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord getBuffRecords(int index) {
          return buffRecords_.get(index);
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder getBuffRecordsOrBuilder(
            int index) {
          return buffRecords_.get(index);
        }

        public static final int GRAPH_KILLS_FIELD_NUMBER = 7;
        private java.util.List graphKills_;
        /**
         * repeated float graph_kills = 7;
         */
        public java.util.List
            getGraphKillsList() {
          return graphKills_;
        }
        /**
         * repeated float graph_kills = 7;
         */
        public int getGraphKillsCount() {
          return graphKills_.size();
        }
        /**
         * repeated float graph_kills = 7;
         */
        public float getGraphKills(int index) {
          return graphKills_.get(index);
        }

        public static final int GRAPH_DEATHS_FIELD_NUMBER = 8;
        private java.util.List graphDeaths_;
        /**
         * repeated float graph_deaths = 8;
         */
        public java.util.List
            getGraphDeathsList() {
          return graphDeaths_;
        }
        /**
         * repeated float graph_deaths = 8;
         */
        public int getGraphDeathsCount() {
          return graphDeaths_.size();
        }
        /**
         * repeated float graph_deaths = 8;
         */
        public float getGraphDeaths(int index) {
          return graphDeaths_.get(index);
        }

        public static final int GRAPH_ASSISTS_FIELD_NUMBER = 9;
        private java.util.List graphAssists_;
        /**
         * repeated float graph_assists = 9;
         */
        public java.util.List
            getGraphAssistsList() {
          return graphAssists_;
        }
        /**
         * repeated float graph_assists = 9;
         */
        public int getGraphAssistsCount() {
          return graphAssists_.size();
        }
        /**
         * repeated float graph_assists = 9;
         */
        public float getGraphAssists(int index) {
          return graphAssists_.get(index);
        }

        public static final int GRAPH_LASTHITS_FIELD_NUMBER = 10;
        private java.util.List graphLasthits_;
        /**
         * repeated float graph_lasthits = 10;
         */
        public java.util.List
            getGraphLasthitsList() {
          return graphLasthits_;
        }
        /**
         * repeated float graph_lasthits = 10;
         */
        public int getGraphLasthitsCount() {
          return graphLasthits_.size();
        }
        /**
         * repeated float graph_lasthits = 10;
         */
        public float getGraphLasthits(int index) {
          return graphLasthits_.get(index);
        }

        public static final int GRAPH_DENIES_FIELD_NUMBER = 11;
        private java.util.List graphDenies_;
        /**
         * repeated float graph_denies = 11;
         */
        public java.util.List
            getGraphDeniesList() {
          return graphDenies_;
        }
        /**
         * repeated float graph_denies = 11;
         */
        public int getGraphDeniesCount() {
          return graphDenies_.size();
        }
        /**
         * repeated float graph_denies = 11;
         */
        public float getGraphDenies(int index) {
          return graphDenies_.get(index);
        }

        private void initFields() {
          accountId_ = 0;
          playerSlot_ = 0;
          positionStream_ = com.google.protobuf.ByteString.EMPTY;
          combatSegments_ = java.util.Collections.emptyList();
          damageUnitNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          buffRecords_ = java.util.Collections.emptyList();
          graphKills_ = java.util.Collections.emptyList();
          graphDeaths_ = java.util.Collections.emptyList();
          graphAssists_ = java.util.Collections.emptyList();
          graphLasthits_ = java.util.Collections.emptyList();
          graphDenies_ = java.util.Collections.emptyList();
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, accountId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, playerSlot_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeBytes(3, positionStream_);
          }
          for (int i = 0; i < combatSegments_.size(); i++) {
            output.writeMessage(4, combatSegments_.get(i));
          }
          for (int i = 0; i < damageUnitNames_.size(); i++) {
            output.writeBytes(5, damageUnitNames_.getByteString(i));
          }
          for (int i = 0; i < buffRecords_.size(); i++) {
            output.writeMessage(6, buffRecords_.get(i));
          }
          for (int i = 0; i < graphKills_.size(); i++) {
            output.writeFloat(7, graphKills_.get(i));
          }
          for (int i = 0; i < graphDeaths_.size(); i++) {
            output.writeFloat(8, graphDeaths_.get(i));
          }
          for (int i = 0; i < graphAssists_.size(); i++) {
            output.writeFloat(9, graphAssists_.get(i));
          }
          for (int i = 0; i < graphLasthits_.size(); i++) {
            output.writeFloat(10, graphLasthits_.get(i));
          }
          for (int i = 0; i < graphDenies_.size(); i++) {
            output.writeFloat(11, graphDenies_.get(i));
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, accountId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, playerSlot_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(3, positionStream_);
          }
          for (int i = 0; i < combatSegments_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, combatSegments_.get(i));
          }
          {
            int dataSize = 0;
            for (int i = 0; i < damageUnitNames_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeBytesSizeNoTag(damageUnitNames_.getByteString(i));
            }
            size += dataSize;
            size += 1 * getDamageUnitNamesList().size();
          }
          for (int i = 0; i < buffRecords_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(6, buffRecords_.get(i));
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphKillsList().size();
            size += dataSize;
            size += 1 * getGraphKillsList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphDeathsList().size();
            size += dataSize;
            size += 1 * getGraphDeathsList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphAssistsList().size();
            size += dataSize;
            size += 1 * getGraphAssistsList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphLasthitsList().size();
            size += dataSize;
            size += 1 * getGraphLasthitsList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphDeniesList().size();
            size += dataSize;
            size += 1 * getGraphDeniesList().size();
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getCombatSegmentsFieldBuilder();
              getBuffRecordsFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            accountId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            playerSlot_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            positionStream_ = com.google.protobuf.ByteString.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000004);
            if (combatSegmentsBuilder_ == null) {
              combatSegments_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              combatSegmentsBuilder_.clear();
            }
            damageUnitNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000010);
            if (buffRecordsBuilder_ == null) {
              buffRecords_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              buffRecordsBuilder_.clear();
            }
            graphKills_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            graphDeaths_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            graphAssists_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
            graphLasthits_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
            graphDenies_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000400);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.accountId_ = accountId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.playerSlot_ = playerSlot_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.positionStream_ = positionStream_;
            if (combatSegmentsBuilder_ == null) {
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                combatSegments_ = java.util.Collections.unmodifiableList(combatSegments_);
                bitField0_ = (bitField0_ & ~0x00000008);
              }
              result.combatSegments_ = combatSegments_;
            } else {
              result.combatSegments_ = combatSegmentsBuilder_.build();
            }
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              damageUnitNames_ = damageUnitNames_.getUnmodifiableView();
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.damageUnitNames_ = damageUnitNames_;
            if (buffRecordsBuilder_ == null) {
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                buffRecords_ = java.util.Collections.unmodifiableList(buffRecords_);
                bitField0_ = (bitField0_ & ~0x00000020);
              }
              result.buffRecords_ = buffRecords_;
            } else {
              result.buffRecords_ = buffRecordsBuilder_.build();
            }
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              graphKills_ = java.util.Collections.unmodifiableList(graphKills_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.graphKills_ = graphKills_;
            if (((bitField0_ & 0x00000080) == 0x00000080)) {
              graphDeaths_ = java.util.Collections.unmodifiableList(graphDeaths_);
              bitField0_ = (bitField0_ & ~0x00000080);
            }
            result.graphDeaths_ = graphDeaths_;
            if (((bitField0_ & 0x00000100) == 0x00000100)) {
              graphAssists_ = java.util.Collections.unmodifiableList(graphAssists_);
              bitField0_ = (bitField0_ & ~0x00000100);
            }
            result.graphAssists_ = graphAssists_;
            if (((bitField0_ & 0x00000200) == 0x00000200)) {
              graphLasthits_ = java.util.Collections.unmodifiableList(graphLasthits_);
              bitField0_ = (bitField0_ & ~0x00000200);
            }
            result.graphLasthits_ = graphLasthits_;
            if (((bitField0_ & 0x00000400) == 0x00000400)) {
              graphDenies_ = java.util.Collections.unmodifiableList(graphDenies_);
              bitField0_ = (bitField0_ & ~0x00000400);
            }
            result.graphDenies_ = graphDenies_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.getDefaultInstance()) return this;
            if (other.hasAccountId()) {
              setAccountId(other.getAccountId());
            }
            if (other.hasPlayerSlot()) {
              setPlayerSlot(other.getPlayerSlot());
            }
            if (other.hasPositionStream()) {
              setPositionStream(other.getPositionStream());
            }
            if (combatSegmentsBuilder_ == null) {
              if (!other.combatSegments_.isEmpty()) {
                if (combatSegments_.isEmpty()) {
                  combatSegments_ = other.combatSegments_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                } else {
                  ensureCombatSegmentsIsMutable();
                  combatSegments_.addAll(other.combatSegments_);
                }
                onChanged();
              }
            } else {
              if (!other.combatSegments_.isEmpty()) {
                if (combatSegmentsBuilder_.isEmpty()) {
                  combatSegmentsBuilder_.dispose();
                  combatSegmentsBuilder_ = null;
                  combatSegments_ = other.combatSegments_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                  combatSegmentsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getCombatSegmentsFieldBuilder() : null;
                } else {
                  combatSegmentsBuilder_.addAllMessages(other.combatSegments_);
                }
              }
            }
            if (!other.damageUnitNames_.isEmpty()) {
              if (damageUnitNames_.isEmpty()) {
                damageUnitNames_ = other.damageUnitNames_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureDamageUnitNamesIsMutable();
                damageUnitNames_.addAll(other.damageUnitNames_);
              }
              onChanged();
            }
            if (buffRecordsBuilder_ == null) {
              if (!other.buffRecords_.isEmpty()) {
                if (buffRecords_.isEmpty()) {
                  buffRecords_ = other.buffRecords_;
                  bitField0_ = (bitField0_ & ~0x00000020);
                } else {
                  ensureBuffRecordsIsMutable();
                  buffRecords_.addAll(other.buffRecords_);
                }
                onChanged();
              }
            } else {
              if (!other.buffRecords_.isEmpty()) {
                if (buffRecordsBuilder_.isEmpty()) {
                  buffRecordsBuilder_.dispose();
                  buffRecordsBuilder_ = null;
                  buffRecords_ = other.buffRecords_;
                  bitField0_ = (bitField0_ & ~0x00000020);
                  buffRecordsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getBuffRecordsFieldBuilder() : null;
                } else {
                  buffRecordsBuilder_.addAllMessages(other.buffRecords_);
                }
              }
            }
            if (!other.graphKills_.isEmpty()) {
              if (graphKills_.isEmpty()) {
                graphKills_ = other.graphKills_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureGraphKillsIsMutable();
                graphKills_.addAll(other.graphKills_);
              }
              onChanged();
            }
            if (!other.graphDeaths_.isEmpty()) {
              if (graphDeaths_.isEmpty()) {
                graphDeaths_ = other.graphDeaths_;
                bitField0_ = (bitField0_ & ~0x00000080);
              } else {
                ensureGraphDeathsIsMutable();
                graphDeaths_.addAll(other.graphDeaths_);
              }
              onChanged();
            }
            if (!other.graphAssists_.isEmpty()) {
              if (graphAssists_.isEmpty()) {
                graphAssists_ = other.graphAssists_;
                bitField0_ = (bitField0_ & ~0x00000100);
              } else {
                ensureGraphAssistsIsMutable();
                graphAssists_.addAll(other.graphAssists_);
              }
              onChanged();
            }
            if (!other.graphLasthits_.isEmpty()) {
              if (graphLasthits_.isEmpty()) {
                graphLasthits_ = other.graphLasthits_;
                bitField0_ = (bitField0_ & ~0x00000200);
              } else {
                ensureGraphLasthitsIsMutable();
                graphLasthits_.addAll(other.graphLasthits_);
              }
              onChanged();
            }
            if (!other.graphDenies_.isEmpty()) {
              if (graphDenies_.isEmpty()) {
                graphDenies_ = other.graphDenies_;
                bitField0_ = (bitField0_ & ~0x00000400);
              } else {
                ensureGraphDeniesIsMutable();
                graphDenies_.addAll(other.graphDenies_);
              }
              onChanged();
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int accountId_ ;
          /**
           * optional uint32 account_id = 1;
           */
          public boolean hasAccountId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 account_id = 1;
           */
          public int getAccountId() {
            return accountId_;
          }
          /**
           * optional uint32 account_id = 1;
           */
          public Builder setAccountId(int value) {
            bitField0_ |= 0x00000001;
            accountId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 account_id = 1;
           */
          public Builder clearAccountId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            accountId_ = 0;
            onChanged();
            return this;
          }

          private int playerSlot_ ;
          /**
           * optional uint32 player_slot = 2;
           */
          public boolean hasPlayerSlot() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 player_slot = 2;
           */
          public int getPlayerSlot() {
            return playerSlot_;
          }
          /**
           * optional uint32 player_slot = 2;
           */
          public Builder setPlayerSlot(int value) {
            bitField0_ |= 0x00000002;
            playerSlot_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 player_slot = 2;
           */
          public Builder clearPlayerSlot() {
            bitField0_ = (bitField0_ & ~0x00000002);
            playerSlot_ = 0;
            onChanged();
            return this;
          }

          private com.google.protobuf.ByteString positionStream_ = com.google.protobuf.ByteString.EMPTY;
          /**
           * optional bytes position_stream = 3;
           */
          public boolean hasPositionStream() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional bytes position_stream = 3;
           */
          public com.google.protobuf.ByteString getPositionStream() {
            return positionStream_;
          }
          /**
           * optional bytes position_stream = 3;
           */
          public Builder setPositionStream(com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
            positionStream_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bytes position_stream = 3;
           */
          public Builder clearPositionStream() {
            bitField0_ = (bitField0_ & ~0x00000004);
            positionStream_ = getDefaultInstance().getPositionStream();
            onChanged();
            return this;
          }

          private java.util.List combatSegments_ =
            java.util.Collections.emptyList();
          private void ensureCombatSegmentsIsMutable() {
            if (!((bitField0_ & 0x00000008) == 0x00000008)) {
              combatSegments_ = new java.util.ArrayList(combatSegments_);
              bitField0_ |= 0x00000008;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder> combatSegmentsBuilder_;

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public java.util.List getCombatSegmentsList() {
            if (combatSegmentsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(combatSegments_);
            } else {
              return combatSegmentsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public int getCombatSegmentsCount() {
            if (combatSegmentsBuilder_ == null) {
              return combatSegments_.size();
            } else {
              return combatSegmentsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment getCombatSegments(int index) {
            if (combatSegmentsBuilder_ == null) {
              return combatSegments_.get(index);
            } else {
              return combatSegmentsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder setCombatSegments(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment value) {
            if (combatSegmentsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCombatSegmentsIsMutable();
              combatSegments_.set(index, value);
              onChanged();
            } else {
              combatSegmentsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder setCombatSegments(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder builderForValue) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              combatSegments_.set(index, builderForValue.build());
              onChanged();
            } else {
              combatSegmentsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addCombatSegments(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment value) {
            if (combatSegmentsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCombatSegmentsIsMutable();
              combatSegments_.add(value);
              onChanged();
            } else {
              combatSegmentsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addCombatSegments(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment value) {
            if (combatSegmentsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCombatSegmentsIsMutable();
              combatSegments_.add(index, value);
              onChanged();
            } else {
              combatSegmentsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addCombatSegments(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder builderForValue) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              combatSegments_.add(builderForValue.build());
              onChanged();
            } else {
              combatSegmentsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addCombatSegments(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder builderForValue) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              combatSegments_.add(index, builderForValue.build());
              onChanged();
            } else {
              combatSegmentsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addAllCombatSegments(
              java.lang.Iterable values) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, combatSegments_);
              onChanged();
            } else {
              combatSegmentsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder clearCombatSegments() {
            if (combatSegmentsBuilder_ == null) {
              combatSegments_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
              onChanged();
            } else {
              combatSegmentsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder removeCombatSegments(int index) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              combatSegments_.remove(index);
              onChanged();
            } else {
              combatSegmentsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder getCombatSegmentsBuilder(
              int index) {
            return getCombatSegmentsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder getCombatSegmentsOrBuilder(
              int index) {
            if (combatSegmentsBuilder_ == null) {
              return combatSegments_.get(index);  } else {
              return combatSegmentsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public java.util.List 
               getCombatSegmentsOrBuilderList() {
            if (combatSegmentsBuilder_ != null) {
              return combatSegmentsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(combatSegments_);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder addCombatSegmentsBuilder() {
            return getCombatSegmentsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder addCombatSegmentsBuilder(
              int index) {
            return getCombatSegmentsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public java.util.List 
               getCombatSegmentsBuilderList() {
            return getCombatSegmentsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder> 
              getCombatSegmentsFieldBuilder() {
            if (combatSegmentsBuilder_ == null) {
              combatSegmentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder>(
                      combatSegments_,
                      ((bitField0_ & 0x00000008) == 0x00000008),
                      getParentForChildren(),
                      isClean());
              combatSegments_ = null;
            }
            return combatSegmentsBuilder_;
          }

          private com.google.protobuf.LazyStringList damageUnitNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          private void ensureDamageUnitNamesIsMutable() {
            if (!((bitField0_ & 0x00000010) == 0x00000010)) {
              damageUnitNames_ = new com.google.protobuf.LazyStringArrayList(damageUnitNames_);
              bitField0_ |= 0x00000010;
             }
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public com.google.protobuf.ProtocolStringList
              getDamageUnitNamesList() {
            return damageUnitNames_.getUnmodifiableView();
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public int getDamageUnitNamesCount() {
            return damageUnitNames_.size();
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public java.lang.String getDamageUnitNames(int index) {
            return damageUnitNames_.get(index);
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public com.google.protobuf.ByteString
              getDamageUnitNamesBytes(int index) {
            return damageUnitNames_.getByteString(index);
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder setDamageUnitNames(
              int index, java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  ensureDamageUnitNamesIsMutable();
            damageUnitNames_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder addDamageUnitNames(
              java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  ensureDamageUnitNamesIsMutable();
            damageUnitNames_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder addAllDamageUnitNames(
              java.lang.Iterable values) {
            ensureDamageUnitNamesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, damageUnitNames_);
            onChanged();
            return this;
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder clearDamageUnitNames() {
            damageUnitNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
            return this;
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder addDamageUnitNamesBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  ensureDamageUnitNamesIsMutable();
            damageUnitNames_.add(value);
            onChanged();
            return this;
          }

          private java.util.List buffRecords_ =
            java.util.Collections.emptyList();
          private void ensureBuffRecordsIsMutable() {
            if (!((bitField0_ & 0x00000020) == 0x00000020)) {
              buffRecords_ = new java.util.ArrayList(buffRecords_);
              bitField0_ |= 0x00000020;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder> buffRecordsBuilder_;

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public java.util.List getBuffRecordsList() {
            if (buffRecordsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(buffRecords_);
            } else {
              return buffRecordsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public int getBuffRecordsCount() {
            if (buffRecordsBuilder_ == null) {
              return buffRecords_.size();
            } else {
              return buffRecordsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord getBuffRecords(int index) {
            if (buffRecordsBuilder_ == null) {
              return buffRecords_.get(index);
            } else {
              return buffRecordsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder setBuffRecords(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord value) {
            if (buffRecordsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureBuffRecordsIsMutable();
              buffRecords_.set(index, value);
              onChanged();
            } else {
              buffRecordsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder setBuffRecords(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder builderForValue) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              buffRecords_.set(index, builderForValue.build());
              onChanged();
            } else {
              buffRecordsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addBuffRecords(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord value) {
            if (buffRecordsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureBuffRecordsIsMutable();
              buffRecords_.add(value);
              onChanged();
            } else {
              buffRecordsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addBuffRecords(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord value) {
            if (buffRecordsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureBuffRecordsIsMutable();
              buffRecords_.add(index, value);
              onChanged();
            } else {
              buffRecordsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addBuffRecords(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder builderForValue) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              buffRecords_.add(builderForValue.build());
              onChanged();
            } else {
              buffRecordsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addBuffRecords(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder builderForValue) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              buffRecords_.add(index, builderForValue.build());
              onChanged();
            } else {
              buffRecordsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addAllBuffRecords(
              java.lang.Iterable values) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, buffRecords_);
              onChanged();
            } else {
              buffRecordsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder clearBuffRecords() {
            if (buffRecordsBuilder_ == null) {
              buffRecords_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000020);
              onChanged();
            } else {
              buffRecordsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder removeBuffRecords(int index) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              buffRecords_.remove(index);
              onChanged();
            } else {
              buffRecordsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder getBuffRecordsBuilder(
              int index) {
            return getBuffRecordsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder getBuffRecordsOrBuilder(
              int index) {
            if (buffRecordsBuilder_ == null) {
              return buffRecords_.get(index);  } else {
              return buffRecordsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public java.util.List 
               getBuffRecordsOrBuilderList() {
            if (buffRecordsBuilder_ != null) {
              return buffRecordsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(buffRecords_);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder addBuffRecordsBuilder() {
            return getBuffRecordsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder addBuffRecordsBuilder(
              int index) {
            return getBuffRecordsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public java.util.List 
               getBuffRecordsBuilderList() {
            return getBuffRecordsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder> 
              getBuffRecordsFieldBuilder() {
            if (buffRecordsBuilder_ == null) {
              buffRecordsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder>(
                      buffRecords_,
                      ((bitField0_ & 0x00000020) == 0x00000020),
                      getParentForChildren(),
                      isClean());
              buffRecords_ = null;
            }
            return buffRecordsBuilder_;
          }

          private java.util.List graphKills_ = java.util.Collections.emptyList();
          private void ensureGraphKillsIsMutable() {
            if (!((bitField0_ & 0x00000040) == 0x00000040)) {
              graphKills_ = new java.util.ArrayList(graphKills_);
              bitField0_ |= 0x00000040;
             }
          }
          /**
           * repeated float graph_kills = 7;
           */
          public java.util.List
              getGraphKillsList() {
            return java.util.Collections.unmodifiableList(graphKills_);
          }
          /**
           * repeated float graph_kills = 7;
           */
          public int getGraphKillsCount() {
            return graphKills_.size();
          }
          /**
           * repeated float graph_kills = 7;
           */
          public float getGraphKills(int index) {
            return graphKills_.get(index);
          }
          /**
           * repeated float graph_kills = 7;
           */
          public Builder setGraphKills(
              int index, float value) {
            ensureGraphKillsIsMutable();
            graphKills_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_kills = 7;
           */
          public Builder addGraphKills(float value) {
            ensureGraphKillsIsMutable();
            graphKills_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_kills = 7;
           */
          public Builder addAllGraphKills(
              java.lang.Iterable values) {
            ensureGraphKillsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphKills_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_kills = 7;
           */
          public Builder clearGraphKills() {
            graphKills_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
            return this;
          }

          private java.util.List graphDeaths_ = java.util.Collections.emptyList();
          private void ensureGraphDeathsIsMutable() {
            if (!((bitField0_ & 0x00000080) == 0x00000080)) {
              graphDeaths_ = new java.util.ArrayList(graphDeaths_);
              bitField0_ |= 0x00000080;
             }
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public java.util.List
              getGraphDeathsList() {
            return java.util.Collections.unmodifiableList(graphDeaths_);
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public int getGraphDeathsCount() {
            return graphDeaths_.size();
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public float getGraphDeaths(int index) {
            return graphDeaths_.get(index);
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public Builder setGraphDeaths(
              int index, float value) {
            ensureGraphDeathsIsMutable();
            graphDeaths_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public Builder addGraphDeaths(float value) {
            ensureGraphDeathsIsMutable();
            graphDeaths_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public Builder addAllGraphDeaths(
              java.lang.Iterable values) {
            ensureGraphDeathsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphDeaths_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public Builder clearGraphDeaths() {
            graphDeaths_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            onChanged();
            return this;
          }

          private java.util.List graphAssists_ = java.util.Collections.emptyList();
          private void ensureGraphAssistsIsMutable() {
            if (!((bitField0_ & 0x00000100) == 0x00000100)) {
              graphAssists_ = new java.util.ArrayList(graphAssists_);
              bitField0_ |= 0x00000100;
             }
          }
          /**
           * repeated float graph_assists = 9;
           */
          public java.util.List
              getGraphAssistsList() {
            return java.util.Collections.unmodifiableList(graphAssists_);
          }
          /**
           * repeated float graph_assists = 9;
           */
          public int getGraphAssistsCount() {
            return graphAssists_.size();
          }
          /**
           * repeated float graph_assists = 9;
           */
          public float getGraphAssists(int index) {
            return graphAssists_.get(index);
          }
          /**
           * repeated float graph_assists = 9;
           */
          public Builder setGraphAssists(
              int index, float value) {
            ensureGraphAssistsIsMutable();
            graphAssists_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_assists = 9;
           */
          public Builder addGraphAssists(float value) {
            ensureGraphAssistsIsMutable();
            graphAssists_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_assists = 9;
           */
          public Builder addAllGraphAssists(
              java.lang.Iterable values) {
            ensureGraphAssistsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphAssists_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_assists = 9;
           */
          public Builder clearGraphAssists() {
            graphAssists_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
            onChanged();
            return this;
          }

          private java.util.List graphLasthits_ = java.util.Collections.emptyList();
          private void ensureGraphLasthitsIsMutable() {
            if (!((bitField0_ & 0x00000200) == 0x00000200)) {
              graphLasthits_ = new java.util.ArrayList(graphLasthits_);
              bitField0_ |= 0x00000200;
             }
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public java.util.List
              getGraphLasthitsList() {
            return java.util.Collections.unmodifiableList(graphLasthits_);
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public int getGraphLasthitsCount() {
            return graphLasthits_.size();
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public float getGraphLasthits(int index) {
            return graphLasthits_.get(index);
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public Builder setGraphLasthits(
              int index, float value) {
            ensureGraphLasthitsIsMutable();
            graphLasthits_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public Builder addGraphLasthits(float value) {
            ensureGraphLasthitsIsMutable();
            graphLasthits_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public Builder addAllGraphLasthits(
              java.lang.Iterable values) {
            ensureGraphLasthitsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphLasthits_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public Builder clearGraphLasthits() {
            graphLasthits_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
            onChanged();
            return this;
          }

          private java.util.List graphDenies_ = java.util.Collections.emptyList();
          private void ensureGraphDeniesIsMutable() {
            if (!((bitField0_ & 0x00000400) == 0x00000400)) {
              graphDenies_ = new java.util.ArrayList(graphDenies_);
              bitField0_ |= 0x00000400;
             }
          }
          /**
           * repeated float graph_denies = 11;
           */
          public java.util.List
              getGraphDeniesList() {
            return java.util.Collections.unmodifiableList(graphDenies_);
          }
          /**
           * repeated float graph_denies = 11;
           */
          public int getGraphDeniesCount() {
            return graphDenies_.size();
          }
          /**
           * repeated float graph_denies = 11;
           */
          public float getGraphDenies(int index) {
            return graphDenies_.get(index);
          }
          /**
           * repeated float graph_denies = 11;
           */
          public Builder setGraphDenies(
              int index, float value) {
            ensureGraphDeniesIsMutable();
            graphDenies_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_denies = 11;
           */
          public Builder addGraphDenies(float value) {
            ensureGraphDeniesIsMutable();
            graphDenies_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_denies = 11;
           */
          public Builder addAllGraphDenies(
              java.lang.Iterable values) {
            ensureGraphDeniesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphDenies_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_denies = 11;
           */
          public Builder clearGraphDenies() {
            graphDenies_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000400);
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player)
        }

        static {
          defaultInstance = new Player(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player)
      }

      public interface BuildingOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Building)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional string unit_name = 1;
         */
        boolean hasUnitName();
        /**
         * optional string unit_name = 1;
         */
        java.lang.String getUnitName();
        /**
         * optional string unit_name = 1;
         */
        com.google.protobuf.ByteString
            getUnitNameBytes();

        /**
         * optional uint32 position_quant_x = 2;
         */
        boolean hasPositionQuantX();
        /**
         * optional uint32 position_quant_x = 2;
         */
        int getPositionQuantX();

        /**
         * optional uint32 position_quant_y = 3;
         */
        boolean hasPositionQuantY();
        /**
         * optional uint32 position_quant_y = 3;
         */
        int getPositionQuantY();

        /**
         * optional float death_time = 4;
         */
        boolean hasDeathTime();
        /**
         * optional float death_time = 4;
         */
        float getDeathTime();
      }
      /**
       * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Building}
       */
      public static final class Building extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Building)
          BuildingOrBuilder {
        // Use Building.newBuilder() to construct.
        private Building(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private Building(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

        private static final Building defaultInstance;
        public static Building getDefaultInstance() {
          return defaultInstance;
        }

        public Building getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private Building(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          initFields();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000001;
                  unitName_ = bs;
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  positionQuantX_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  positionQuantY_ = input.readUInt32();
                  break;
                }
                case 37: {
                  bitField0_ |= 0x00000008;
                  deathTime_ = input.readFloat();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e.getMessage()).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int UNIT_NAME_FIELD_NUMBER = 1;
        private java.lang.Object unitName_;
        /**
         * optional string unit_name = 1;
         */
        public boolean hasUnitName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional string unit_name = 1;
         */
        public java.lang.String getUnitName() {
          java.lang.Object ref = unitName_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              unitName_ = s;
            }
            return s;
          }
        }
        /**
         * optional string unit_name = 1;
         */
        public com.google.protobuf.ByteString
            getUnitNameBytes() {
          java.lang.Object ref = unitName_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            unitName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int POSITION_QUANT_X_FIELD_NUMBER = 2;
        private int positionQuantX_;
        /**
         * optional uint32 position_quant_x = 2;
         */
        public boolean hasPositionQuantX() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 position_quant_x = 2;
         */
        public int getPositionQuantX() {
          return positionQuantX_;
        }

        public static final int POSITION_QUANT_Y_FIELD_NUMBER = 3;
        private int positionQuantY_;
        /**
         * optional uint32 position_quant_y = 3;
         */
        public boolean hasPositionQuantY() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 position_quant_y = 3;
         */
        public int getPositionQuantY() {
          return positionQuantY_;
        }

        public static final int DEATH_TIME_FIELD_NUMBER = 4;
        private float deathTime_;
        /**
         * optional float death_time = 4;
         */
        public boolean hasDeathTime() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional float death_time = 4;
         */
        public float getDeathTime() {
          return deathTime_;
        }

        private void initFields() {
          unitName_ = "";
          positionQuantX_ = 0;
          positionQuantY_ = 0;
          deathTime_ = 0F;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeBytes(1, getUnitNameBytes());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, positionQuantX_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, positionQuantY_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeFloat(4, deathTime_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(1, getUnitNameBytes());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, positionQuantX_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, positionQuantY_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(4, deathTime_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSerializedSize = size;
          return size;
        }

        private static final long serialVersionUID = 0L;
        @java.lang.Override
        protected java.lang.Object writeReplace()
            throws java.io.ObjectStreamException {
          return super.writeReplace();
        }

        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }

        public static Builder newBuilder() { return Builder.create(); }
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building prototype) {
          return newBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() { return newBuilder(this); }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Building}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Building)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

          private Builder(
              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            unitName_ = "";
            bitField0_ = (bitField0_ & ~0x00000001);
            positionQuantX_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            positionQuantY_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            deathTime_ = 0F;
            bitField0_ = (bitField0_ & ~0x00000008);
            return this;
          }

          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.unitName_ = unitName_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.positionQuantX_ = positionQuantX_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.positionQuantY_ = positionQuantY_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.deathTime_ = deathTime_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.getDefaultInstance()) return this;
            if (other.hasUnitName()) {
              bitField0_ |= 0x00000001;
              unitName_ = other.unitName_;
              onChanged();
            }
            if (other.hasPositionQuantX()) {
              setPositionQuantX(other.getPositionQuantX());
            }
            if (other.hasPositionQuantY()) {
              setPositionQuantY(other.getPositionQuantY());
            }
            if (other.hasDeathTime()) {
              setDeathTime(other.getDeathTime());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }

          public final boolean isInitialized() {
            return true;
          }

          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private java.lang.Object unitName_ = "";
          /**
           * optional string unit_name = 1;
           */
          public boolean hasUnitName() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional string unit_name = 1;
           */
          public java.lang.String getUnitName() {
            java.lang.Object ref = unitName_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                unitName_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * optional string unit_name = 1;
           */
          public com.google.protobuf.ByteString
              getUnitNameBytes() {
            java.lang.Object ref = unitName_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              unitName_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * optional string unit_name = 1;
           */
          public Builder setUnitName(
              java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
            unitName_ = value;
            onChanged();
            return this;
          }
          /**
           * optional string unit_name = 1;
           */
          public Builder clearUnitName() {
            bitField0_ = (bitField0_ & ~0x00000001);
            unitName_ = getDefaultInstance().getUnitName();
            onChanged();
            return this;
          }
          /**
           * optional string unit_name = 1;
           */
          public Builder setUnitNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
            unitName_ = value;
            onChanged();
            return this;
          }

          private int positionQuantX_ ;
          /**
           * optional uint32 position_quant_x = 2;
           */
          public boolean hasPositionQuantX() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 position_quant_x = 2;
           */
          public int getPositionQuantX() {
            return positionQuantX_;
          }
          /**
           * optional uint32 position_quant_x = 2;
           */
          public Builder setPositionQuantX(int value) {
            bitField0_ |= 0x00000002;
            positionQuantX_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 position_quant_x = 2;
           */
          public Builder clearPositionQuantX() {
            bitField0_ = (bitField0_ & ~0x00000002);
            positionQuantX_ = 0;
            onChanged();
            return this;
          }

          private int positionQuantY_ ;
          /**
           * optional uint32 position_quant_y = 3;
           */
          public boolean hasPositionQuantY() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 position_quant_y = 3;
           */
          public int getPositionQuantY() {
            return positionQuantY_;
          }
          /**
           * optional uint32 position_quant_y = 3;
           */
          public Builder setPositionQuantY(int value) {
            bitField0_ |= 0x00000004;
            positionQuantY_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 position_quant_y = 3;
           */
          public Builder clearPositionQuantY() {
            bitField0_ = (bitField0_ & ~0x00000004);
            positionQuantY_ = 0;
            onChanged();
            return this;
          }

          private float deathTime_ ;
          /**
           * optional float death_time = 4;
           */
          public boolean hasDeathTime() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional float death_time = 4;
           */
          public float getDeathTime() {
            return deathTime_;
          }
          /**
           * optional float death_time = 4;
           */
          public Builder setDeathTime(float value) {
            bitField0_ |= 0x00000008;
            deathTime_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float death_time = 4;
           */
          public Builder clearDeathTime() {
            bitField0_ = (bitField0_ & ~0x00000008);
            deathTime_ = 0F;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Building)
        }

        static {
          defaultInstance = new Building(true);
          defaultInstance.initFields();
        }

        // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Building)
      }

      private int bitField0_;
      public static final int DOTA_TEAM_FIELD_NUMBER = 1;
      private int dotaTeam_;
      /**
       * optional uint32 dota_team = 1;
       */
      public boolean hasDotaTeam() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 dota_team = 1;
       */
      public int getDotaTeam() {
        return dotaTeam_;
      }

      public static final int PLAYERS_FIELD_NUMBER = 2;
      private java.util.List players_;
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public java.util.List getPlayersList() {
        return players_;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public java.util.List 
          getPlayersOrBuilderList() {
        return players_;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public int getPlayersCount() {
        return players_.size();
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player getPlayers(int index) {
        return players_.get(index);
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
          int index) {
        return players_.get(index);
      }

      public static final int BUILDINGS_FIELD_NUMBER = 3;
      private java.util.List buildings_;
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public java.util.List getBuildingsList() {
        return buildings_;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public java.util.List 
          getBuildingsOrBuilderList() {
        return buildings_;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public int getBuildingsCount() {
        return buildings_.size();
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building getBuildings(int index) {
        return buildings_.get(index);
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder getBuildingsOrBuilder(
          int index) {
        return buildings_.get(index);
      }

      private void initFields() {
        dotaTeam_ = 0;
        players_ = java.util.Collections.emptyList();
        buildings_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, dotaTeam_);
        }
        for (int i = 0; i < players_.size(); i++) {
          output.writeMessage(2, players_.get(i));
        }
        for (int i = 0; i < buildings_.size(); i++) {
          output.writeMessage(3, buildings_.get(i));
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, dotaTeam_);
        }
        for (int i = 0; i < players_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, players_.get(i));
        }
        for (int i = 0; i < buildings_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, buildings_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code CDOTAMatchPrivateMetadata.Team}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team)
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder.class);
        }

        // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getPlayersFieldBuilder();
            getBuildingsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          dotaTeam_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (playersBuilder_ == null) {
            players_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            playersBuilder_.clear();
          }
          if (buildingsBuilder_ == null) {
            buildings_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            buildingsBuilder_.clear();
          }
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_descriptor;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team getDefaultInstanceForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.getDefaultInstance();
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team build() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team buildPartial() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.dotaTeam_ = dotaTeam_;
          if (playersBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              players_ = java.util.Collections.unmodifiableList(players_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.players_ = players_;
          } else {
            result.players_ = playersBuilder_.build();
          }
          if (buildingsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              buildings_ = java.util.Collections.unmodifiableList(buildings_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.buildings_ = buildings_;
          } else {
            result.buildings_ = buildingsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team) {
            return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team other) {
          if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.getDefaultInstance()) return this;
          if (other.hasDotaTeam()) {
            setDotaTeam(other.getDotaTeam());
          }
          if (playersBuilder_ == null) {
            if (!other.players_.isEmpty()) {
              if (players_.isEmpty()) {
                players_ = other.players_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensurePlayersIsMutable();
                players_.addAll(other.players_);
              }
              onChanged();
            }
          } else {
            if (!other.players_.isEmpty()) {
              if (playersBuilder_.isEmpty()) {
                playersBuilder_.dispose();
                playersBuilder_ = null;
                players_ = other.players_;
                bitField0_ = (bitField0_ & ~0x00000002);
                playersBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getPlayersFieldBuilder() : null;
              } else {
                playersBuilder_.addAllMessages(other.players_);
              }
            }
          }
          if (buildingsBuilder_ == null) {
            if (!other.buildings_.isEmpty()) {
              if (buildings_.isEmpty()) {
                buildings_ = other.buildings_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureBuildingsIsMutable();
                buildings_.addAll(other.buildings_);
              }
              onChanged();
            }
          } else {
            if (!other.buildings_.isEmpty()) {
              if (buildingsBuilder_.isEmpty()) {
                buildingsBuilder_.dispose();
                buildingsBuilder_ = null;
                buildings_ = other.buildings_;
                bitField0_ = (bitField0_ & ~0x00000004);
                buildingsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getBuildingsFieldBuilder() : null;
              } else {
                buildingsBuilder_.addAllMessages(other.buildings_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int dotaTeam_ ;
        /**
         * optional uint32 dota_team = 1;
         */
        public boolean hasDotaTeam() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 dota_team = 1;
         */
        public int getDotaTeam() {
          return dotaTeam_;
        }
        /**
         * optional uint32 dota_team = 1;
         */
        public Builder setDotaTeam(int value) {
          bitField0_ |= 0x00000001;
          dotaTeam_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 dota_team = 1;
         */
        public Builder clearDotaTeam() {
          bitField0_ = (bitField0_ & ~0x00000001);
          dotaTeam_ = 0;
          onChanged();
          return this;
        }

        private java.util.List players_ =
          java.util.Collections.emptyList();
        private void ensurePlayersIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            players_ = new java.util.ArrayList(players_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder> playersBuilder_;

        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public java.util.List getPlayersList() {
          if (playersBuilder_ == null) {
            return java.util.Collections.unmodifiableList(players_);
          } else {
            return playersBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public int getPlayersCount() {
          if (playersBuilder_ == null) {
            return players_.size();
          } else {
            return playersBuilder_.getCount();
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player getPlayers(int index) {
          if (playersBuilder_ == null) {
            return players_.get(index);
          } else {
            return playersBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder setPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player value) {
          if (playersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlayersIsMutable();
            players_.set(index, value);
            onChanged();
          } else {
            playersBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder setPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.set(index, builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player value) {
          if (playersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlayersIsMutable();
            players_.add(value);
            onChanged();
          } else {
            playersBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player value) {
          if (playersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlayersIsMutable();
            players_.add(index, value);
            onChanged();
          } else {
            playersBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.add(builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.add(index, builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addAllPlayers(
            java.lang.Iterable values) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, players_);
            onChanged();
          } else {
            playersBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder clearPlayers() {
          if (playersBuilder_ == null) {
            players_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            playersBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder removePlayers(int index) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.remove(index);
            onChanged();
          } else {
            playersBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder getPlayersBuilder(
            int index) {
          return getPlayersFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
            int index) {
          if (playersBuilder_ == null) {
            return players_.get(index);  } else {
            return playersBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public java.util.List 
             getPlayersOrBuilderList() {
          if (playersBuilder_ != null) {
            return playersBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(players_);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder addPlayersBuilder() {
          return getPlayersFieldBuilder().addBuilder(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder addPlayersBuilder(
            int index) {
          return getPlayersFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public java.util.List 
             getPlayersBuilderList() {
          return getPlayersFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder> 
            getPlayersFieldBuilder() {
          if (playersBuilder_ == null) {
            playersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder>(
                    players_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            players_ = null;
          }
          return playersBuilder_;
        }

        private java.util.List buildings_ =
          java.util.Collections.emptyList();
        private void ensureBuildingsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            buildings_ = new java.util.ArrayList(buildings_);
            bitField0_ |= 0x00000004;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder> buildingsBuilder_;

        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public java.util.List getBuildingsList() {
          if (buildingsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(buildings_);
          } else {
            return buildingsBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public int getBuildingsCount() {
          if (buildingsBuilder_ == null) {
            return buildings_.size();
          } else {
            return buildingsBuilder_.getCount();
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building getBuildings(int index) {
          if (buildingsBuilder_ == null) {
            return buildings_.get(index);
          } else {
            return buildingsBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder setBuildings(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building value) {
          if (buildingsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBuildingsIsMutable();
            buildings_.set(index, value);
            onChanged();
          } else {
            buildingsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder setBuildings(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder builderForValue) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            buildings_.set(index, builderForValue.build());
            onChanged();
          } else {
            buildingsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addBuildings(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building value) {
          if (buildingsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBuildingsIsMutable();
            buildings_.add(value);
            onChanged();
          } else {
            buildingsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addBuildings(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building value) {
          if (buildingsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBuildingsIsMutable();
            buildings_.add(index, value);
            onChanged();
          } else {
            buildingsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addBuildings(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder builderForValue) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            buildings_.add(builderForValue.build());
            onChanged();
          } else {
            buildingsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addBuildings(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder builderForValue) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            buildings_.add(index, builderForValue.build());
            onChanged();
          } else {
            buildingsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addAllBuildings(
            java.lang.Iterable values) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, buildings_);
            onChanged();
          } else {
            buildingsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder clearBuildings() {
          if (buildingsBuilder_ == null) {
            buildings_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            buildingsBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder removeBuildings(int index) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            buildings_.remove(index);
            onChanged();
          } else {
            buildingsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder getBuildingsBuilder(
            int index) {
          return getBuildingsFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder getBuildingsOrBuilder(
            int index) {
          if (buildingsBuilder_ == null) {
            return buildings_.get(index);  } else {
            return buildingsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public java.util.List 
             getBuildingsOrBuilderList() {
          if (buildingsBuilder_ != null) {
            return buildingsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(buildings_);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder addBuildingsBuilder() {
          return getBuildingsFieldBuilder().addBuilder(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder addBuildingsBuilder(
            int index) {
          return getBuildingsFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public java.util.List 
             getBuildingsBuilderList() {
          return getBuildingsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder> 
            getBuildingsFieldBuilder() {
          if (buildingsBuilder_ == null) {
            buildingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder>(
                    buildings_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            buildings_ = null;
          }
          return buildingsBuilder_;
        }

        // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team)
      }

      static {
        defaultInstance = new Team(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team)
    }

    public static final int TEAMS_FIELD_NUMBER = 1;
    private java.util.List teams_;
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public java.util.List getTeamsList() {
      return teams_;
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public java.util.List 
        getTeamsOrBuilderList() {
      return teams_;
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public int getTeamsCount() {
      return teams_.size();
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team getTeams(int index) {
      return teams_.get(index);
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder getTeamsOrBuilder(
        int index) {
      return teams_.get(index);
    }

    public static final int GRAPH_WIN_PROBABILITY_FIELD_NUMBER = 2;
    private java.util.List graphWinProbability_;
    /**
     * repeated float graph_win_probability = 2;
     */
    public java.util.List
        getGraphWinProbabilityList() {
      return graphWinProbability_;
    }
    /**
     * repeated float graph_win_probability = 2;
     */
    public int getGraphWinProbabilityCount() {
      return graphWinProbability_.size();
    }
    /**
     * repeated float graph_win_probability = 2;
     */
    public float getGraphWinProbability(int index) {
      return graphWinProbability_.get(index);
    }

    private void initFields() {
      teams_ = java.util.Collections.emptyList();
      graphWinProbability_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < teams_.size(); i++) {
        output.writeMessage(1, teams_.get(i));
      }
      for (int i = 0; i < graphWinProbability_.size(); i++) {
        output.writeFloat(2, graphWinProbability_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < teams_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, teams_.get(i));
      }
      {
        int dataSize = 0;
        dataSize = 4 * getGraphWinProbabilityList().size();
        size += dataSize;
        size += 1 * getGraphWinProbabilityList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code CDOTAMatchPrivateMetadata}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTeamsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (teamsBuilder_ == null) {
          teams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          teamsBuilder_.clear();
        }
        graphWinProbability_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.getDefaultInstance();
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata build() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata(this);
        int from_bitField0_ = bitField0_;
        if (teamsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            teams_ = java.util.Collections.unmodifiableList(teams_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.teams_ = teams_;
        } else {
          result.teams_ = teamsBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          graphWinProbability_ = java.util.Collections.unmodifiableList(graphWinProbability_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.graphWinProbability_ = graphWinProbability_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata) {
          return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.getDefaultInstance()) return this;
        if (teamsBuilder_ == null) {
          if (!other.teams_.isEmpty()) {
            if (teams_.isEmpty()) {
              teams_ = other.teams_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTeamsIsMutable();
              teams_.addAll(other.teams_);
            }
            onChanged();
          }
        } else {
          if (!other.teams_.isEmpty()) {
            if (teamsBuilder_.isEmpty()) {
              teamsBuilder_.dispose();
              teamsBuilder_ = null;
              teams_ = other.teams_;
              bitField0_ = (bitField0_ & ~0x00000001);
              teamsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTeamsFieldBuilder() : null;
            } else {
              teamsBuilder_.addAllMessages(other.teams_);
            }
          }
        }
        if (!other.graphWinProbability_.isEmpty()) {
          if (graphWinProbability_.isEmpty()) {
            graphWinProbability_ = other.graphWinProbability_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureGraphWinProbabilityIsMutable();
            graphWinProbability_.addAll(other.graphWinProbability_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List teams_ =
        java.util.Collections.emptyList();
      private void ensureTeamsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          teams_ = new java.util.ArrayList(teams_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder> teamsBuilder_;

      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public java.util.List getTeamsList() {
        if (teamsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(teams_);
        } else {
          return teamsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public int getTeamsCount() {
        if (teamsBuilder_ == null) {
          return teams_.size();
        } else {
          return teamsBuilder_.getCount();
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team getTeams(int index) {
        if (teamsBuilder_ == null) {
          return teams_.get(index);
        } else {
          return teamsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder setTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.set(index, value);
          onChanged();
        } else {
          teamsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder setTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.set(index, builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addTeams(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.add(value);
          onChanged();
        } else {
          teamsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.add(index, value);
          onChanged();
        } else {
          teamsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addTeams(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.add(builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.add(index, builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addAllTeams(
          java.lang.Iterable values) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, teams_);
          onChanged();
        } else {
          teamsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder clearTeams() {
        if (teamsBuilder_ == null) {
          teams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          teamsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder removeTeams(int index) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.remove(index);
          onChanged();
        } else {
          teamsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder getTeamsBuilder(
          int index) {
        return getTeamsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder getTeamsOrBuilder(
          int index) {
        if (teamsBuilder_ == null) {
          return teams_.get(index);  } else {
          return teamsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public java.util.List 
           getTeamsOrBuilderList() {
        if (teamsBuilder_ != null) {
          return teamsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(teams_);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder addTeamsBuilder() {
        return getTeamsFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder addTeamsBuilder(
          int index) {
        return getTeamsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public java.util.List 
           getTeamsBuilderList() {
        return getTeamsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder> 
          getTeamsFieldBuilder() {
        if (teamsBuilder_ == null) {
          teamsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder>(
                  teams_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          teams_ = null;
        }
        return teamsBuilder_;
      }

      private java.util.List graphWinProbability_ = java.util.Collections.emptyList();
      private void ensureGraphWinProbabilityIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          graphWinProbability_ = new java.util.ArrayList(graphWinProbability_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public java.util.List
          getGraphWinProbabilityList() {
        return java.util.Collections.unmodifiableList(graphWinProbability_);
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public int getGraphWinProbabilityCount() {
        return graphWinProbability_.size();
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public float getGraphWinProbability(int index) {
        return graphWinProbability_.get(index);
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public Builder setGraphWinProbability(
          int index, float value) {
        ensureGraphWinProbabilityIsMutable();
        graphWinProbability_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public Builder addGraphWinProbability(float value) {
        ensureGraphWinProbabilityIsMutable();
        graphWinProbability_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public Builder addAllGraphWinProbability(
          java.lang.Iterable values) {
        ensureGraphWinProbabilityIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, graphWinProbability_);
        onChanged();
        return this;
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public Builder clearGraphWinProbability() {
        graphWinProbability_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata)
    }

    static {
      defaultInstance = new CDOTAMatchPrivateMetadata(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata)
  }

  public interface CMsgMatchMatchmakingStatsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CMsgMatchMatchmakingStats)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional uint32 average_queue_time = 1;
     */
    boolean hasAverageQueueTime();
    /**
     * optional uint32 average_queue_time = 1;
     */
    int getAverageQueueTime();

    /**
     * optional uint32 maximum_queue_time = 2;
     */
    boolean hasMaximumQueueTime();
    /**
     * optional uint32 maximum_queue_time = 2;
     */
    int getMaximumQueueTime();

    /**
     * optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid];
     */
    boolean hasBehaviorScoreVariance();
    /**
     * optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid];
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance getBehaviorScoreVariance();
  }
  /**
   * Protobuf type {@code CMsgMatchMatchmakingStats}
   */
  public static final class CMsgMatchMatchmakingStats extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMsgMatchMatchmakingStats)
      CMsgMatchMatchmakingStatsOrBuilder {
    // Use CMsgMatchMatchmakingStats.newBuilder() to construct.
    private CMsgMatchMatchmakingStats(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMsgMatchMatchmakingStats(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final CMsgMatchMatchmakingStats defaultInstance;
    public static CMsgMatchMatchmakingStats getDefaultInstance() {
      return defaultInstance;
    }

    public CMsgMatchMatchmakingStats getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMsgMatchMatchmakingStats(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              averageQueueTime_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              maximumQueueTime_ = input.readUInt32();
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance value = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(3, rawValue);
              } else {
                bitField0_ |= 0x00000004;
                behaviorScoreVariance_ = value;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgMatchMatchmakingStats_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgMatchMatchmakingStats_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int AVERAGE_QUEUE_TIME_FIELD_NUMBER = 1;
    private int averageQueueTime_;
    /**
     * optional uint32 average_queue_time = 1;
     */
    public boolean hasAverageQueueTime() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional uint32 average_queue_time = 1;
     */
    public int getAverageQueueTime() {
      return averageQueueTime_;
    }

    public static final int MAXIMUM_QUEUE_TIME_FIELD_NUMBER = 2;
    private int maximumQueueTime_;
    /**
     * optional uint32 maximum_queue_time = 2;
     */
    public boolean hasMaximumQueueTime() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional uint32 maximum_queue_time = 2;
     */
    public int getMaximumQueueTime() {
      return maximumQueueTime_;
    }

    public static final int BEHAVIOR_SCORE_VARIANCE_FIELD_NUMBER = 3;
    private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance behaviorScoreVariance_;
    /**
     * optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid];
     */
    public boolean hasBehaviorScoreVariance() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid];
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance getBehaviorScoreVariance() {
      return behaviorScoreVariance_;
    }

    private void initFields() {
      averageQueueTime_ = 0;
      maximumQueueTime_ = 0;
      behaviorScoreVariance_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance.k_EMatchBehaviorScoreVariance_Invalid;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, averageQueueTime_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, maximumQueueTime_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, behaviorScoreVariance_.getNumber());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, averageQueueTime_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, maximumQueueTime_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, behaviorScoreVariance_.getNumber());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code CMsgMatchMatchmakingStats}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMsgMatchMatchmakingStats)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStatsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgMatchMatchmakingStats_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgMatchMatchmakingStats_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        averageQueueTime_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        maximumQueueTime_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        behaviorScoreVariance_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance.k_EMatchBehaviorScoreVariance_Invalid;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgMatchMatchmakingStats_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.getDefaultInstance();
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats build() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.averageQueueTime_ = averageQueueTime_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.maximumQueueTime_ = maximumQueueTime_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.behaviorScoreVariance_ = behaviorScoreVariance_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats) {
          return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats.getDefaultInstance()) return this;
        if (other.hasAverageQueueTime()) {
          setAverageQueueTime(other.getAverageQueueTime());
        }
        if (other.hasMaximumQueueTime()) {
          setMaximumQueueTime(other.getMaximumQueueTime());
        }
        if (other.hasBehaviorScoreVariance()) {
          setBehaviorScoreVariance(other.getBehaviorScoreVariance());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgMatchMatchmakingStats) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int averageQueueTime_ ;
      /**
       * optional uint32 average_queue_time = 1;
       */
      public boolean hasAverageQueueTime() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 average_queue_time = 1;
       */
      public int getAverageQueueTime() {
        return averageQueueTime_;
      }
      /**
       * optional uint32 average_queue_time = 1;
       */
      public Builder setAverageQueueTime(int value) {
        bitField0_ |= 0x00000001;
        averageQueueTime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 average_queue_time = 1;
       */
      public Builder clearAverageQueueTime() {
        bitField0_ = (bitField0_ & ~0x00000001);
        averageQueueTime_ = 0;
        onChanged();
        return this;
      }

      private int maximumQueueTime_ ;
      /**
       * optional uint32 maximum_queue_time = 2;
       */
      public boolean hasMaximumQueueTime() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 maximum_queue_time = 2;
       */
      public int getMaximumQueueTime() {
        return maximumQueueTime_;
      }
      /**
       * optional uint32 maximum_queue_time = 2;
       */
      public Builder setMaximumQueueTime(int value) {
        bitField0_ |= 0x00000002;
        maximumQueueTime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 maximum_queue_time = 2;
       */
      public Builder clearMaximumQueueTime() {
        bitField0_ = (bitField0_ & ~0x00000002);
        maximumQueueTime_ = 0;
        onChanged();
        return this;
      }

      private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance behaviorScoreVariance_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance.k_EMatchBehaviorScoreVariance_Invalid;
      /**
       * optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid];
       */
      public boolean hasBehaviorScoreVariance() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid];
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance getBehaviorScoreVariance() {
        return behaviorScoreVariance_;
      }
      /**
       * optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid];
       */
      public Builder setBehaviorScoreVariance(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        behaviorScoreVariance_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .EMatchBehaviorScoreVariance behavior_score_variance = 3 [default = k_EMatchBehaviorScoreVariance_Invalid];
       */
      public Builder clearBehaviorScoreVariance() {
        bitField0_ = (bitField0_ & ~0x00000004);
        behaviorScoreVariance_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.EMatchBehaviorScoreVariance.k_EMatchBehaviorScoreVariance_Invalid;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CMsgMatchMatchmakingStats)
    }

    static {
      defaultInstance = new CMsgMatchMatchmakingStats(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:CMsgMatchMatchmakingStats)
  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CLobbyTimedRewardDetails_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CLobbyTimedRewardDetails_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadataFile_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadataFile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_PlayerKill_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_ItemPurchase_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_SubChallenge_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_ActionGrant_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_EventData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_EventData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_Player_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_Player_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Building_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgMatchMatchmakingStats_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgMatchMatchmakingStats_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\034s2_dota_match_metadata.proto\032\030s2_base_" +
      "gcmessages.proto\032\037s2_dota_gcmessages_com" +
      "mon.proto\"\206\001\n\030CLobbyTimedRewardDetails\022\026" +
      "\n\016item_def_index\030\002 \001(\r\022\027\n\017is_supply_crat" +
      "e\030\003 \001(\010\022\025\n\ris_timed_drop\030\004 \001(\010\022\022\n\naccoun" +
      "t_id\030\005 \001(\r\022\016\n\006origin\030\006 \001(\r\"|\n\026CDOTAMatch" +
      "MetadataFile\022\017\n\007version\030\001 \002(\005\022\020\n\010match_i" +
      "d\030\002 \002(\004\022%\n\010metadata\030\003 \001(\0132\023.CDOTAMatchMe" +
      "tadata\022\030\n\020private_metadata\030\005 \001(\014\"\320\033\n\022CDO" +
      "TAMatchMetadata\022\'\n\005teams\030\001 \003(\0132\030.CDOTAMa",
      "tchMetadata.Team\022/\n\014item_rewards\030\002 \003(\0132\031" +
      ".CLobbyTimedRewardDetails\022\020\n\010lobby_id\030\003 " +
      "\001(\006\022\031\n\021report_until_time\030\004 \001(\006\022\037\n\027event_" +
      "game_custom_table\030\005 \001(\014\022\030\n\020primary_event" +
      "_id\030\006 \001(\r\022\"\n\nmatch_tips\030\007 \003(\0132\016.CMsgMatc" +
      "hTips\0225\n\021matchmaking_stats\030\010 \001(\0132\032.CMsgM" +
      "atchMatchmakingStats\032\234\031\n\004Team\022\021\n\tdota_te" +
      "am\030\001 \001(\r\0220\n\007players\030\002 \003(\0132\037.CDOTAMatchMe" +
      "tadata.Team.Player\022\030\n\020graph_experience\030\003" +
      " \003(\002\022\031\n\021graph_gold_earned\030\004 \003(\002\022\027\n\017graph",
      "_net_worth\030\005 \003(\002\022\025\n\rcm_first_pick\030\006 \001(\010\022" +
      "\034\n\024cm_captain_player_id\030\007 \001(\r\022\017\n\007cm_bans" +
      "\030\010 \003(\r\022\020\n\010cm_picks\030\t \003(\r\022\022\n\ncm_penalty\030\n" +
      " \001(\r\0320\n\nPlayerKill\022\023\n\013victim_slot\030\001 \001(\r\022" +
      "\r\n\005count\030\002 \001(\r\0326\n\014ItemPurchase\022\017\n\007item_i" +
      "d\030\001 \001(\r\022\025\n\rpurchase_time\030\002 \001(\005\032v\n\021Invent" +
      "orySnapshot\022\017\n\007item_id\030\001 \003(\r\022\021\n\tgame_tim" +
      "e\030\002 \001(\005\022\r\n\005kills\030\003 \001(\r\022\016\n\006deaths\030\004 \001(\r\022\017" +
      "\n\007assists\030\005 \001(\r\022\r\n\005level\030\006 \001(\r\0326\n\021AutoSt" +
      "yleCriteria\022\022\n\nname_token\030\001 \001(\r\022\r\n\005value",
      "\030\002 \001(\002\032\306\001\n\022StrangeGemProgress\022\027\n\017kill_ea" +
      "ter_type\030\001 \001(\r\022\032\n\022gem_item_def_index\030\002 \001" +
      "(\r\022\030\n\020required_hero_id\030\003 \001(\r\022\026\n\016starting" +
      "_value\030\004 \001(\r\022\024\n\014ending_value\030\005 \001(\r\022\034\n\024ow" +
      "ner_item_def_index\030\006 \001(\r\022\025\n\rowner_item_i" +
      "d\030\007 \001(\004\032h\n\021VictoryPrediction\022\017\n\007item_id\030" +
      "\001 \001(\004\022\026\n\016item_def_index\030\002 \001(\r\022\026\n\016startin" +
      "g_value\030\003 \001(\r\022\022\n\nis_victory\030\004 \001(\010\032Z\n\014Sub" +
      "Challenge\022\017\n\007slot_id\030\001 \001(\r\022\023\n\013start_valu" +
      "e\030\002 \001(\r\022\021\n\tend_value\030\003 \001(\r\022\021\n\tcompleted\030",
      "\004 \001(\010\032K\n\025CavernChallengeResult\022\031\n\021comple" +
      "ted_path_id\030\001 \001(\r\022\027\n\017claimed_room_id\030\002 \001" +
      "(\r\032A\n\013ActionGrant\022\021\n\taction_id\030\001 \001(\r\022\020\n\010" +
      "quantity\030\002 \001(\r\022\r\n\005audit\030\003 \001(\r\032\330\005\n\tEventD" +
      "ata\022\020\n\010event_id\030\001 \001(\r\022\024\n\014event_points\030\002 " +
      "\001(\r\022\035\n\025challenge_instance_id\030\003 \001(\r\022\032\n\022ch" +
      "allenge_quest_id\030\004 \001(\r\022$\n\034challenge_ques" +
      "t_challenge_id\030\005 \001(\r\022\033\n\023challenge_comple" +
      "ted\030\006 \001(\010\022 \n\030challenge_rank_completed\030\007 " +
      "\001(\r\022+\n#challenge_rank_previously_complet",
      "ed\030\010 \001(\r\022\023\n\013event_owned\030\t \001(\010\022K\n\034sub_cha" +
      "llenges_with_progress\030\n \003(\0132%.CDOTAMatch" +
      "Metadata.Team.SubChallenge\022\026\n\016wager_winn" +
      "ings\030\013 \001(\r\022\037\n\027cavern_challenge_active\030\014 " +
      "\001(\010\022!\n\031cavern_challenge_winnings\030\r \001(\r\022\026" +
      "\n\016amount_wagered\030\016 \001(\r\022\031\n\021team_wager_amo" +
      "unt\030\017 \001(\r\022\"\n\032periodic_point_adjustments\030" +
      "\020 \001(\r\022T\n\034cavern_challenge_map_results\030\021 " +
      "\003(\0132..CDOTAMatchMetadata.Team.CavernChal" +
      "lengeResult\022,\n$cavern_challenge_plus_sha",
      "rd_winnings\030\022 \001(\r\022=\n\017actions_granted\030\023 \003" +
      "(\0132$.CDOTAMatchMetadata.Team.ActionGrant" +
      "\032\200\013\n\006Player\022\022\n\naccount_id\030\001 \001(\r\022\030\n\020abili" +
      "ty_upgrades\030\002 \003(\r\022\023\n\013player_slot\030\003 \001(\r\022)" +
      "\n\023equipped_econ_items\030\004 \003(\0132\014.CSOEconIte" +
      "m\0222\n\005kills\030\005 \003(\0132#.CDOTAMatchMetadata.Te" +
      "am.PlayerKill\0224\n\005items\030\006 \003(\0132%.CDOTAMatc" +
      "hMetadata.Team.ItemPurchase\022\025\n\ravg_kills" +
      "_x16\030\007 \001(\r\022\026\n\016avg_deaths_x16\030\010 \001(\r\022\027\n\017av" +
      "g_assists_x16\030\t \001(\r\022\023\n\013avg_gpm_x16\030\n \001(\r",
      "\022\023\n\013avg_xpm_x16\030\013 \001(\r\022\026\n\016best_kills_x16\030" +
      "\014 \001(\r\022\030\n\020best_assists_x16\030\r \001(\r\022\024\n\014best_" +
      "gpm_x16\030\016 \001(\r\022\024\n\014best_xpm_x16\030\017 \001(\r\022\022\n\nw" +
      "in_streak\030\020 \001(\r\022\027\n\017best_win_streak\030\021 \001(\r" +
      "\022\023\n\013fight_score\030\022 \001(\002\022\022\n\nfarm_score\030\023 \001(" +
      "\002\022\025\n\rsupport_score\030\024 \001(\002\022\022\n\npush_score\030\025" +
      " \001(\002\022\026\n\016level_up_times\030\026 \003(\r\022\027\n\017graph_ne" +
      "t_worth\030\027 \003(\002\022F\n\022inventory_snapshot\030\030 \003(" +
      "\0132*.CDOTAMatchMetadata.Team.InventorySna" +
      "pshot\022\034\n\024avg_stats_calibrated\030\031 \001(\010\022G\n\023a",
      "uto_style_criteria\030\032 \003(\0132*.CDOTAMatchMet" +
      "adata.Team.AutoStyleCriteria\0226\n\nevent_da" +
      "ta\030\035 \003(\0132\".CDOTAMatchMetadata.Team.Event" +
      "Data\022I\n\024strange_gem_progress\030\036 \003(\0132+.CDO" +
      "TAMatchMetadata.Team.StrangeGemProgress\022" +
      "\017\n\007hero_xp\030\037 \001(\r\022\025\n\rcamps_stacked\030  \001(\r\022" +
      "F\n\022victory_prediction\030! \003(\0132*.CDOTAMatch" +
      "Metadata.Team.VictoryPrediction\022\034\n\024lane_" +
      "selection_flags\030\" \001(\r\022\020\n\010rampages\030# \001(\r\022" +
      "\024\n\014triple_kills\030$ \001(\r\022\026\n\016aegis_snatched\030",
      "% \001(\r\022\031\n\021rapiers_purchased\030& \001(\r\022\027\n\017cour" +
      "iers_killed\030\' \001(\r\022\026\n\016net_worth_rank\030( \001(" +
      "\r\022\032\n\022support_gold_spent\030) \001(\r\022\035\n\025observe" +
      "r_wards_placed\030* \001(\r\022\033\n\023sentry_wards_pla" +
      "ced\030+ \001(\r\022\026\n\016wards_dewarded\030, \001(\r\022\025\n\rstu" +
      "n_duration\030- \001(\002\022I\n\023rank_mmr_boost_type\030" +
      ". \001(\0162\022.EDOTAMMRBoostType:\030k_EDOTAMMRBoo" +
      "stType_None\"\244\n\n\031CDOTAMatchPrivateMetadat" +
      "a\022.\n\005teams\030\001 \003(\0132\037.CDOTAMatchPrivateMeta" +
      "data.Team\022\035\n\025graph_win_probability\030\002 \003(\002",
      "\032\267\t\n\004Team\022\021\n\tdota_team\030\001 \001(\r\0227\n\007players\030" +
      "\002 \003(\0132&.CDOTAMatchPrivateMetadata.Team.P" +
      "layer\022;\n\tbuildings\030\003 \003(\0132(.CDOTAMatchPri" +
      "vateMetadata.Team.Building\032\276\007\n\006Player\022\022\n" +
      "\naccount_id\030\001 \001(\r\022\023\n\013player_slot\030\002 \001(\r\022\027" +
      "\n\017position_stream\030\003 \001(\014\022M\n\017combat_segmen" +
      "ts\030\004 \003(\01324.CDOTAMatchPrivateMetadata.Tea" +
      "m.Player.CombatSegment\022\031\n\021damage_unit_na" +
      "mes\030\005 \003(\t\022G\n\014buff_records\030\006 \003(\01321.CDOTAM" +
      "atchPrivateMetadata.Team.Player.BuffReco",
      "rd\022\023\n\013graph_kills\030\007 \003(\002\022\024\n\014graph_deaths\030" +
      "\010 \003(\002\022\025\n\rgraph_assists\030\t \003(\002\022\026\n\016graph_la" +
      "sthits\030\n \003(\002\022\024\n\014graph_denies\030\013 \003(\002\032\343\002\n\rC" +
      "ombatSegment\022\021\n\tgame_time\030\001 \001(\005\022_\n\021damag" +
      "e_by_ability\030\002 \003(\0132D.CDOTAMatchPrivateMe" +
      "tadata.Team.Player.CombatSegment.DamageB" +
      "yAbility\032\335\001\n\017DamageByAbility\022\031\n\021source_u" +
      "nit_index\030\003 \001(\r\022\022\n\nability_id\030\001 \001(\r\022j\n\017b" +
      "y_hero_targets\030\002 \003(\0132Q.CDOTAMatchPrivate" +
      "Metadata.Team.Player.CombatSegment.Damag",
      "eByAbility.ByHeroTarget\032/\n\014ByHeroTarget\022" +
      "\017\n\007hero_id\030\001 \001(\r\022\016\n\006damage\030\002 \001(\r\032\350\001\n\nBuf" +
      "fRecord\022\027\n\017buff_ability_id\030\001 \001(\r\022\032\n\022buff" +
      "_modifier_name\030\003 \001(\t\022W\n\017by_hero_targets\030" +
      "\002 \003(\0132>.CDOTAMatchPrivateMetadata.Team.P" +
      "layer.BuffRecord.ByHeroTarget\032L\n\014ByHeroT" +
      "arget\022\017\n\007hero_id\030\001 \001(\r\022\030\n\020elapsed_durati" +
      "on\030\002 \001(\002\022\021\n\tis_hidden\030\003 \001(\010\032e\n\010Building\022" +
      "\021\n\tunit_name\030\001 \001(\t\022\030\n\020position_quant_x\030\002" +
      " \001(\r\022\030\n\020position_quant_y\030\003 \001(\r\022\022\n\ndeath_",
      "time\030\004 \001(\002\"\271\001\n\031CMsgMatchMatchmakingStats" +
      "\022\032\n\022average_queue_time\030\001 \001(\r\022\032\n\022maximum_" +
      "queue_time\030\002 \001(\r\022d\n\027behavior_score_varia" +
      "nce\030\003 \001(\0162\034.EMatchBehaviorScoreVariance:" +
      "%k_EMatchBehaviorScoreVariance_Invalid*\301" +
      "\001\n\033EMatchBehaviorScoreVariance\022)\n%k_EMat" +
      "chBehaviorScoreVariance_Invalid\020\000\022%\n!k_E" +
      "MatchBehaviorScoreVariance_Low\020\001\022(\n$k_EM" +
      "atchBehaviorScoreVariance_Medium\020\002\022&\n\"k_" +
      "EMatchBehaviorScoreVariance_High\020\003B:\n sk",
      "adistats.clarity.wire.s2.protoB\023S2DotaMa" +
      "tchMetadata\200\001\000"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          skadistats.clarity.wire.s2.proto.S2BaseGcMessages.getDescriptor(),
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.getDescriptor(),
        }, assigner);
    internal_static_CLobbyTimedRewardDetails_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_CLobbyTimedRewardDetails_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CLobbyTimedRewardDetails_descriptor,
        new java.lang.String[] { "ItemDefIndex", "IsSupplyCrate", "IsTimedDrop", "AccountId", "Origin", });
    internal_static_CDOTAMatchMetadataFile_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_CDOTAMatchMetadataFile_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadataFile_descriptor,
        new java.lang.String[] { "Version", "MatchId", "Metadata", "PrivateMetadata", });
    internal_static_CDOTAMatchMetadata_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_CDOTAMatchMetadata_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_descriptor,
        new java.lang.String[] { "Teams", "ItemRewards", "LobbyId", "ReportUntilTime", "EventGameCustomTable", "PrimaryEventId", "MatchTips", "MatchmakingStats", });
    internal_static_CDOTAMatchMetadata_Team_descriptor =
      internal_static_CDOTAMatchMetadata_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchMetadata_Team_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_descriptor,
        new java.lang.String[] { "DotaTeam", "Players", "GraphExperience", "GraphGoldEarned", "GraphNetWorth", "CmFirstPick", "CmCaptainPlayerId", "CmBans", "CmPicks", "CmPenalty", });
    internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchMetadata_Team_PlayerKill_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor,
        new java.lang.String[] { "VictimSlot", "Count", });
    internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchMetadata_Team_ItemPurchase_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor,
        new java.lang.String[] { "ItemId", "PurchaseTime", });
    internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(2);
    internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor,
        new java.lang.String[] { "ItemId", "GameTime", "Kills", "Deaths", "Assists", "Level", });
    internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(3);
    internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor,
        new java.lang.String[] { "NameToken", "Value", });
    internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(4);
    internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor,
        new java.lang.String[] { "KillEaterType", "GemItemDefIndex", "RequiredHeroId", "StartingValue", "EndingValue", "OwnerItemDefIndex", "OwnerItemId", });
    internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(5);
    internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor,
        new java.lang.String[] { "ItemId", "ItemDefIndex", "StartingValue", "IsVictory", });
    internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(6);
    internal_static_CDOTAMatchMetadata_Team_SubChallenge_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor,
        new java.lang.String[] { "SlotId", "StartValue", "EndValue", "Completed", });
    internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(7);
    internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor,
        new java.lang.String[] { "CompletedPathId", "ClaimedRoomId", });
    internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(8);
    internal_static_CDOTAMatchMetadata_Team_ActionGrant_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor,
        new java.lang.String[] { "ActionId", "Quantity", "Audit", });
    internal_static_CDOTAMatchMetadata_Team_EventData_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(9);
    internal_static_CDOTAMatchMetadata_Team_EventData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_EventData_descriptor,
        new java.lang.String[] { "EventId", "EventPoints", "ChallengeInstanceId", "ChallengeQuestId", "ChallengeQuestChallengeId", "ChallengeCompleted", "ChallengeRankCompleted", "ChallengeRankPreviouslyCompleted", "EventOwned", "SubChallengesWithProgress", "WagerWinnings", "CavernChallengeActive", "CavernChallengeWinnings", "AmountWagered", "TeamWagerAmount", "PeriodicPointAdjustments", "CavernChallengeMapResults", "CavernChallengePlusShardWinnings", "ActionsGranted", });
    internal_static_CDOTAMatchMetadata_Team_Player_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(10);
    internal_static_CDOTAMatchMetadata_Team_Player_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_Player_descriptor,
        new java.lang.String[] { "AccountId", "AbilityUpgrades", "PlayerSlot", "EquippedEconItems", "Kills", "Items", "AvgKillsX16", "AvgDeathsX16", "AvgAssistsX16", "AvgGpmX16", "AvgXpmX16", "BestKillsX16", "BestAssistsX16", "BestGpmX16", "BestXpmX16", "WinStreak", "BestWinStreak", "FightScore", "FarmScore", "SupportScore", "PushScore", "LevelUpTimes", "GraphNetWorth", "InventorySnapshot", "AvgStatsCalibrated", "AutoStyleCriteria", "EventData", "StrangeGemProgress", "HeroXp", "CampsStacked", "VictoryPrediction", "LaneSelectionFlags", "Rampages", "TripleKills", "AegisSnatched", "RapiersPurchased", "CouriersKilled", "NetWorthRank", "SupportGoldSpent", "ObserverWardsPlaced", "SentryWardsPlaced", "WardsDewarded", "StunDuration", "RankMmrBoostType", });
    internal_static_CDOTAMatchPrivateMetadata_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_CDOTAMatchPrivateMetadata_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_descriptor,
        new java.lang.String[] { "Teams", "GraphWinProbability", });
    internal_static_CDOTAMatchPrivateMetadata_Team_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_descriptor,
        new java.lang.String[] { "DotaTeam", "Players", "Buildings", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor,
        new java.lang.String[] { "AccountId", "PlayerSlot", "PositionStream", "CombatSegments", "DamageUnitNames", "BuffRecords", "GraphKills", "GraphDeaths", "GraphAssists", "GraphLasthits", "GraphDenies", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor,
        new java.lang.String[] { "GameTime", "DamageByAbility", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor,
        new java.lang.String[] { "SourceUnitIndex", "AbilityId", "ByHeroTargets", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor,
        new java.lang.String[] { "HeroId", "Damage", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor,
        new java.lang.String[] { "BuffAbilityId", "BuffModifierName", "ByHeroTargets", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor,
        new java.lang.String[] { "HeroId", "ElapsedDuration", "IsHidden", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchPrivateMetadata_Team_Building_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor,
        new java.lang.String[] { "UnitName", "PositionQuantX", "PositionQuantY", "DeathTime", });
    internal_static_CMsgMatchMatchmakingStats_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_CMsgMatchMatchmakingStats_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgMatchMatchmakingStats_descriptor,
        new java.lang.String[] { "AverageQueueTime", "MaximumQueueTime", "BehaviorScoreVariance", });
    skadistats.clarity.wire.s2.proto.S2BaseGcMessages.getDescriptor();
    skadistats.clarity.wire.s2.proto.S2DotaGcCommon.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy