diff --git a/Makefile b/Makefile index f66ae934153..1feed6ded0e 100644 --- a/Makefile +++ b/Makefile @@ -324,11 +324,11 @@ GENERATE_FILES ?= true %.pb.go: %.proto ifeq ($(GENERATE_FILES),true) - if [ "$@" != "*_custom_types.proto" ]; then \ + if case "$@" in *_custom_types.pb.go) false ;; *) true ;; esac; then \ protoc -I $(GOPATH)/src:./vendor/github.com/gogo/protobuf:./vendor:./$(@D):./pkg/storegateway/storepb --gogoslick_out=plugins=grpc,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types,:./$(@D) ./$(patsubst %.pb.go,%.proto,$@); \ - else \ + else \ echo "Skipping $@"; \ - fi + fi else @echo "Warning: generating files has been disabled, but the following file needs to be regenerated: $@" @echo "If this is unexpected, check if the last modified timestamps on $@ and $(patsubst %.pb.go,%.proto,$@) are correct." diff --git a/pkg/mimirpb/mimir.pb.go b/pkg/mimirpb/mimir.pb.go index 3caf0d72f40..07a484d80a6 100644 --- a/pkg/mimirpb/mimir.pb.go +++ b/pkg/mimirpb/mimir.pb.go @@ -4,7 +4,6 @@ package mimirpb import ( - bytes "bytes" encoding_binary "encoding/binary" fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" @@ -140,7 +139,7 @@ var MetricMetadata_MetricType_value = map[string]int32{ } func (MetricMetadata_MetricType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{6, 0} + return fileDescriptor_86d4d7485f544059, []int{5, 0} } type Histogram_ResetHint int32 @@ -167,7 +166,7 @@ var Histogram_ResetHint_value = map[string]int32{ } func (Histogram_ResetHint) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{9, 0} + return fileDescriptor_86d4d7485f544059, []int{8, 0} } // These values correspond to the possible status values defined in https://github.com/prometheus/prometheus/blob/main/web/api/v1/api.go. @@ -189,7 +188,7 @@ var QueryResponse_Status_value = map[string]int32{ } func (QueryResponse_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{16, 0} + return fileDescriptor_86d4d7485f544059, []int{15, 0} } // These values correspond to the possible error type values defined in https://github.com/prometheus/prometheus/blob/main/web/api/v1/api.go. @@ -232,7 +231,7 @@ var QueryResponse_ErrorType_value = map[string]int32{ } func (QueryResponse_ErrorType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{16, 1} + return fileDescriptor_86d4d7485f544059, []int{15, 1} } type WriteRequest struct { @@ -457,57 +456,6 @@ func (m *TimeSeries) GetHistograms() []Histogram { return nil } -type LabelPair struct { - Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *LabelPair) Reset() { *m = LabelPair{} } -func (*LabelPair) ProtoMessage() {} -func (*LabelPair) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{4} -} -func (m *LabelPair) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LabelPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LabelPair.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LabelPair) XXX_Merge(src proto.Message) { - xxx_messageInfo_LabelPair.Merge(m, src) -} -func (m *LabelPair) XXX_Size() int { - return m.Size() -} -func (m *LabelPair) XXX_DiscardUnknown() { - xxx_messageInfo_LabelPair.DiscardUnknown(m) -} - -var xxx_messageInfo_LabelPair proto.InternalMessageInfo - -func (m *LabelPair) GetName() []byte { - if m != nil { - return m.Name - } - return nil -} - -func (m *LabelPair) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - type Sample struct { // Fields order MUST match promql.FPoint so that we can cast types between them. TimestampMs int64 `protobuf:"varint,2,opt,name=timestamp_ms,json=timestampMs,proto3" json:"timestamp_ms,omitempty"` @@ -517,7 +465,7 @@ type Sample struct { func (m *Sample) Reset() { *m = Sample{} } func (*Sample) ProtoMessage() {} func (*Sample) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{5} + return fileDescriptor_86d4d7485f544059, []int{4} } func (m *Sample) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -570,7 +518,7 @@ type MetricMetadata struct { func (m *MetricMetadata) Reset() { *m = MetricMetadata{} } func (*MetricMetadata) ProtoMessage() {} func (*MetricMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{6} + return fileDescriptor_86d4d7485f544059, []int{5} } func (m *MetricMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -634,7 +582,7 @@ type Metric struct { func (m *Metric) Reset() { *m = Metric{} } func (*Metric) ProtoMessage() {} func (*Metric) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{7} + return fileDescriptor_86d4d7485f544059, []int{6} } func (m *Metric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -680,7 +628,7 @@ type Exemplar struct { func (m *Exemplar) Reset() { *m = Exemplar{} } func (*Exemplar) ProtoMessage() {} func (*Exemplar) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{8} + return fileDescriptor_86d4d7485f544059, []int{7} } func (m *Exemplar) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -774,7 +722,7 @@ type Histogram struct { func (m *Histogram) Reset() { *m = Histogram{} } func (*Histogram) ProtoMessage() {} func (*Histogram) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{9} + return fileDescriptor_86d4d7485f544059, []int{8} } func (m *Histogram) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -982,7 +930,7 @@ type FloatHistogram struct { func (m *FloatHistogram) Reset() { *m = FloatHistogram{} } func (*FloatHistogram) ProtoMessage() {} func (*FloatHistogram) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{10} + return fileDescriptor_86d4d7485f544059, []int{9} } func (m *FloatHistogram) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1105,7 +1053,7 @@ type BucketSpan struct { func (m *BucketSpan) Reset() { *m = BucketSpan{} } func (*BucketSpan) ProtoMessage() {} func (*BucketSpan) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{11} + return fileDescriptor_86d4d7485f544059, []int{10} } func (m *BucketSpan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1157,7 +1105,7 @@ type FloatHistogramPair struct { func (m *FloatHistogramPair) Reset() { *m = FloatHistogramPair{} } func (*FloatHistogramPair) ProtoMessage() {} func (*FloatHistogramPair) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{12} + return fileDescriptor_86d4d7485f544059, []int{11} } func (m *FloatHistogramPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1212,7 +1160,7 @@ type SampleHistogram struct { func (m *SampleHistogram) Reset() { *m = SampleHistogram{} } func (*SampleHistogram) ProtoMessage() {} func (*SampleHistogram) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{13} + return fileDescriptor_86d4d7485f544059, []int{12} } func (m *SampleHistogram) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1273,7 +1221,7 @@ type HistogramBucket struct { func (m *HistogramBucket) Reset() { *m = HistogramBucket{} } func (*HistogramBucket) ProtoMessage() {} func (*HistogramBucket) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{14} + return fileDescriptor_86d4d7485f544059, []int{13} } func (m *HistogramBucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1339,7 +1287,7 @@ type SampleHistogramPair struct { func (m *SampleHistogramPair) Reset() { *m = SampleHistogramPair{} } func (*SampleHistogramPair) ProtoMessage() {} func (*SampleHistogramPair) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{15} + return fileDescriptor_86d4d7485f544059, []int{14} } func (m *SampleHistogramPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1400,7 +1348,7 @@ type QueryResponse struct { func (m *QueryResponse) Reset() { *m = QueryResponse{} } func (*QueryResponse) ProtoMessage() {} func (*QueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{16} + return fileDescriptor_86d4d7485f544059, []int{15} } func (m *QueryResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1542,7 +1490,7 @@ type StringData struct { func (m *StringData) Reset() { *m = StringData{} } func (*StringData) ProtoMessage() {} func (*StringData) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{17} + return fileDescriptor_86d4d7485f544059, []int{16} } func (m *StringData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1593,7 +1541,7 @@ type VectorData struct { func (m *VectorData) Reset() { *m = VectorData{} } func (*VectorData) ProtoMessage() {} func (*VectorData) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{18} + return fileDescriptor_86d4d7485f544059, []int{17} } func (m *VectorData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1646,7 +1594,7 @@ type VectorSample struct { func (m *VectorSample) Reset() { *m = VectorSample{} } func (*VectorSample) ProtoMessage() {} func (*VectorSample) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{19} + return fileDescriptor_86d4d7485f544059, []int{18} } func (m *VectorSample) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1706,7 +1654,7 @@ type VectorHistogram struct { func (m *VectorHistogram) Reset() { *m = VectorHistogram{} } func (*VectorHistogram) ProtoMessage() {} func (*VectorHistogram) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{20} + return fileDescriptor_86d4d7485f544059, []int{19} } func (m *VectorHistogram) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1764,7 +1712,7 @@ type ScalarData struct { func (m *ScalarData) Reset() { *m = ScalarData{} } func (*ScalarData) ProtoMessage() {} func (*ScalarData) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{21} + return fileDescriptor_86d4d7485f544059, []int{20} } func (m *ScalarData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1814,7 +1762,7 @@ type MatrixData struct { func (m *MatrixData) Reset() { *m = MatrixData{} } func (*MatrixData) ProtoMessage() {} func (*MatrixData) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{22} + return fileDescriptor_86d4d7485f544059, []int{21} } func (m *MatrixData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1860,7 +1808,7 @@ type MatrixSeries struct { func (m *MatrixSeries) Reset() { *m = MatrixSeries{} } func (*MatrixSeries) ProtoMessage() {} func (*MatrixSeries) Descriptor() ([]byte, []int) { - return fileDescriptor_86d4d7485f544059, []int{23} + return fileDescriptor_86d4d7485f544059, []int{22} } func (m *MatrixSeries) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1921,7 +1869,6 @@ func init() { proto.RegisterType((*WriteResponse)(nil), "cortexpb.WriteResponse") proto.RegisterType((*ErrorDetails)(nil), "cortexpb.ErrorDetails") proto.RegisterType((*TimeSeries)(nil), "cortexpb.TimeSeries") - proto.RegisterType((*LabelPair)(nil), "cortexpb.LabelPair") proto.RegisterType((*Sample)(nil), "cortexpb.Sample") proto.RegisterType((*MetricMetadata)(nil), "cortexpb.MetricMetadata") proto.RegisterType((*Metric)(nil), "cortexpb.Metric") @@ -1946,134 +1893,133 @@ func init() { func init() { proto.RegisterFile("mimir.proto", fileDescriptor_86d4d7485f544059) } var fileDescriptor_86d4d7485f544059 = []byte{ - // 2030 bytes of a gzipped FileDescriptorProto + // 2010 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x93, 0xdb, 0x48, 0x15, 0xb7, 0x6c, 0xf9, 0x43, 0x6f, 0xec, 0x99, 0x4e, 0x27, 0x1b, 0xbc, 0xc3, 0xc6, 0x49, 0xb4, - 0xc5, 0x32, 0xa4, 0x60, 0x42, 0x6d, 0x20, 0x5b, 0x9b, 0x0a, 0x0b, 0xb2, 0xad, 0x64, 0x9c, 0xb5, - 0xe5, 0xd9, 0x96, 0x9c, 0x10, 0x2e, 0x2a, 0x8d, 0xa7, 0x67, 0x46, 0xb5, 0x96, 0x65, 0x24, 0x39, - 0x9b, 0xe1, 0xc4, 0x85, 0x2a, 0x8a, 0x13, 0x17, 0x2e, 0x14, 0x37, 0x2e, 0x54, 0xf1, 0x8f, 0xa4, - 0x8a, 0x4b, 0x8e, 0x0b, 0x87, 0x14, 0x99, 0x1c, 0x58, 0x0e, 0x54, 0x6d, 0x71, 0xe4, 0x44, 0x75, - 0xb7, 0x3e, 0x3d, 0x33, 0x10, 0xc2, 0xde, 0xf4, 0xde, 0xfb, 0xbd, 0xd7, 0xaf, 0xfb, 0x7d, 0xf4, - 0x6b, 0xc1, 0x9a, 0xe7, 0x7a, 0x6e, 0xb0, 0xbd, 0x08, 0xfc, 0xc8, 0xc7, 0x8d, 0xa9, 0x1f, 0x44, - 0xf4, 0xe9, 0x62, 0x6f, 0xf3, 0x3b, 0x87, 0x6e, 0x74, 0xb4, 0xdc, 0xdb, 0x9e, 0xfa, 0xde, 0xcd, - 0x43, 0xff, 0xd0, 0xbf, 0xc9, 0x01, 0x7b, 0xcb, 0x03, 0x4e, 0x71, 0x82, 0x7f, 0x09, 0xc5, 0xcd, - 0x0b, 0xdc, 0x8a, 0x4d, 0x9f, 0x46, 0x81, 0x23, 0x58, 0xea, 0x3f, 0xca, 0xd0, 0x7c, 0x14, 0xb8, - 0x11, 0x25, 0xf4, 0xa7, 0x4b, 0x1a, 0x46, 0x78, 0x17, 0x20, 0x72, 0x3d, 0x1a, 0xd2, 0xc0, 0xa5, - 0x61, 0x5b, 0xba, 0x56, 0xd9, 0x5a, 0x7b, 0xff, 0xd2, 0x76, 0xb2, 0xe2, 0xb6, 0xe5, 0x7a, 0xd4, - 0xe4, 0xb2, 0xee, 0xe6, 0xb3, 0x17, 0x57, 0x4b, 0x7f, 0x79, 0x71, 0x15, 0xef, 0x06, 0xd4, 0x99, - 0xcd, 0xfc, 0xa9, 0x95, 0xea, 0x91, 0x9c, 0x0d, 0xfc, 0x21, 0xd4, 0x4c, 0x7f, 0x19, 0x4c, 0x69, - 0xbb, 0x7c, 0x4d, 0xda, 0x5a, 0x7f, 0xff, 0x7a, 0x66, 0x2d, 0xbf, 0xf2, 0xb6, 0x00, 0xe9, 0xf3, - 0xa5, 0x47, 0x62, 0x05, 0x7c, 0x07, 0x1a, 0x1e, 0x8d, 0x9c, 0x7d, 0x27, 0x72, 0xda, 0x15, 0xee, - 0x4a, 0x3b, 0x53, 0x1e, 0xd1, 0x28, 0x70, 0xa7, 0xa3, 0x58, 0xde, 0x95, 0x9f, 0xbd, 0xb8, 0x2a, - 0x91, 0x14, 0x8f, 0x6f, 0xc1, 0x5b, 0xe1, 0xa7, 0xee, 0xc2, 0x9e, 0x39, 0x7b, 0x74, 0x66, 0x3f, - 0x71, 0x66, 0xee, 0xbe, 0x13, 0xb9, 0xfe, 0xbc, 0xfd, 0x45, 0xfd, 0x9a, 0xb4, 0xd5, 0x20, 0x17, - 0x99, 0x74, 0xc8, 0x84, 0x0f, 0x53, 0x19, 0xfe, 0x08, 0xbe, 0x9e, 0x53, 0x9a, 0xfa, 0xcb, 0x79, - 0x94, 0x57, 0xfd, 0xbb, 0x50, 0x6d, 0xa7, 0xaa, 0x3d, 0x86, 0xc8, 0xf4, 0xd5, 0xab, 0x00, 0xd9, - 0x36, 0x70, 0x1d, 0x2a, 0xda, 0xee, 0x00, 0x95, 0x70, 0x03, 0x64, 0x32, 0x19, 0xea, 0x48, 0x52, - 0x37, 0xa0, 0x15, 0x6f, 0x3a, 0x5c, 0xf8, 0xf3, 0x90, 0xaa, 0x77, 0xa0, 0xa9, 0x07, 0x81, 0x1f, - 0xf4, 0x69, 0xe4, 0xb8, 0xb3, 0x10, 0xdf, 0x80, 0x6a, 0xcf, 0x59, 0x86, 0xb4, 0x2d, 0xf1, 0xc3, - 0xca, 0x1d, 0x3d, 0x87, 0x71, 0x19, 0x11, 0x10, 0xf5, 0x6f, 0x12, 0x40, 0x16, 0x10, 0xfc, 0x3d, - 0xa8, 0x71, 0xbf, 0x93, 0xb0, 0x5d, 0xce, 0x74, 0xb9, 0xb3, 0xda, 0xbe, 0xb3, 0x88, 0x68, 0xc0, - 0x4f, 0xaa, 0x44, 0x62, 0x2c, 0xfe, 0x2e, 0xd4, 0x43, 0xc7, 0x5b, 0xcc, 0x68, 0xd8, 0x2e, 0x73, - 0x35, 0x94, 0xa9, 0x99, 0x5c, 0x10, 0x2b, 0x24, 0x30, 0x7c, 0x1b, 0x14, 0xfa, 0x94, 0x7a, 0x8b, - 0x99, 0x13, 0x84, 0x71, 0x58, 0x70, 0xce, 0xcd, 0x58, 0x14, 0x6b, 0x65, 0x50, 0xfc, 0x21, 0xc0, - 0x91, 0x1b, 0x46, 0xfe, 0x61, 0xe0, 0x78, 0x61, 0x5b, 0xe6, 0x8a, 0x17, 0x33, 0xc5, 0x9d, 0x44, - 0x16, 0x6b, 0xe6, 0xc0, 0xea, 0xf7, 0x41, 0xe1, 0x5b, 0xd8, 0x75, 0xdc, 0x00, 0x63, 0x90, 0xe7, - 0x8e, 0x27, 0x4e, 0xa8, 0x49, 0xf8, 0x37, 0xbe, 0x04, 0xd5, 0x27, 0xce, 0x6c, 0x29, 0x72, 0xac, - 0x49, 0x04, 0xa1, 0x6a, 0x50, 0x13, 0x5b, 0xc0, 0xd7, 0xa1, 0xc9, 0x53, 0x32, 0x72, 0xbc, 0x85, - 0xed, 0x85, 0x1c, 0x56, 0x21, 0x6b, 0x29, 0x6f, 0x14, 0x66, 0x26, 0x98, 0x5d, 0x29, 0x31, 0xf1, - 0xdb, 0x32, 0xac, 0x17, 0x33, 0x0d, 0x7f, 0x00, 0x72, 0x74, 0xbc, 0x48, 0x22, 0xf4, 0xee, 0x79, - 0x19, 0x19, 0x93, 0xd6, 0xf1, 0x82, 0x12, 0xae, 0x80, 0xbf, 0x0d, 0xd8, 0xe3, 0x3c, 0xfb, 0xc0, - 0xf1, 0xdc, 0xd9, 0xb1, 0xcd, 0xb7, 0xc1, 0x5c, 0x51, 0x08, 0x12, 0x92, 0x7b, 0x5c, 0x60, 0xb0, - 0x2d, 0x61, 0x90, 0x8f, 0xe8, 0x6c, 0xd1, 0x96, 0xb9, 0x9c, 0x7f, 0x33, 0xde, 0x72, 0xee, 0x46, - 0xed, 0xaa, 0xe0, 0xb1, 0x6f, 0xf5, 0x18, 0x20, 0x5b, 0x09, 0xaf, 0x41, 0x7d, 0x62, 0x7c, 0x6c, - 0x8c, 0x1f, 0x19, 0xa8, 0xc4, 0x88, 0xde, 0x78, 0x62, 0x58, 0x3a, 0x41, 0x12, 0x56, 0xa0, 0x7a, - 0x5f, 0x9b, 0xdc, 0xd7, 0x51, 0x19, 0xb7, 0x40, 0xd9, 0x19, 0x98, 0xd6, 0xf8, 0x3e, 0xd1, 0x46, - 0xa8, 0x82, 0x31, 0xac, 0x73, 0x49, 0xc6, 0x93, 0x99, 0xaa, 0x39, 0x19, 0x8d, 0x34, 0xf2, 0x18, - 0x55, 0x59, 0xfe, 0x0e, 0x8c, 0x7b, 0x63, 0x54, 0xc3, 0x4d, 0x68, 0x98, 0x96, 0x66, 0xe9, 0xa6, - 0x6e, 0xa1, 0xba, 0xfa, 0x11, 0xd4, 0xc4, 0xd2, 0x6f, 0x96, 0x7b, 0xea, 0x31, 0x34, 0x92, 0x74, - 0x79, 0xc3, 0xec, 0x2d, 0xc4, 0x3d, 0x09, 0xda, 0xa9, 0x68, 0x57, 0x4e, 0x45, 0x5b, 0xfd, 0x53, - 0x15, 0x94, 0x34, 0xe3, 0xf0, 0x15, 0x50, 0x44, 0xb1, 0xbb, 0xf3, 0x88, 0xc7, 0x55, 0xde, 0x29, - 0x91, 0x06, 0x67, 0x0d, 0xe6, 0x11, 0xbe, 0x0e, 0x6b, 0x42, 0x7c, 0x30, 0xf3, 0x9d, 0x48, 0xac, - 0xb5, 0x53, 0x22, 0xc0, 0x99, 0xf7, 0x18, 0x0f, 0x23, 0xa8, 0x84, 0x4b, 0x8f, 0xaf, 0x24, 0x11, - 0xf6, 0x89, 0x2f, 0x43, 0x2d, 0x9c, 0x1e, 0x51, 0xcf, 0xe1, 0x11, 0xbc, 0x40, 0x62, 0x0a, 0x7f, - 0x03, 0xd6, 0x7f, 0x46, 0x03, 0xdf, 0x8e, 0x8e, 0x02, 0x1a, 0x1e, 0xf9, 0xb3, 0x7d, 0x1e, 0x4d, - 0x89, 0xb4, 0x18, 0xd7, 0x4a, 0x98, 0xf8, 0xbd, 0x18, 0x96, 0xf9, 0x55, 0xe3, 0x7e, 0x49, 0xa4, - 0xc9, 0xf8, 0xbd, 0xc4, 0xb7, 0x1b, 0x80, 0x72, 0x38, 0xe1, 0x60, 0x9d, 0x3b, 0x28, 0x91, 0xf5, - 0x14, 0x29, 0x9c, 0xd4, 0x60, 0x7d, 0x4e, 0x0f, 0x9d, 0xc8, 0x7d, 0x42, 0xed, 0x70, 0xe1, 0xcc, - 0xc3, 0x76, 0x63, 0xb5, 0xc1, 0x77, 0x97, 0xd3, 0x4f, 0x69, 0x64, 0x2e, 0x9c, 0x79, 0x7c, 0xd2, - 0xad, 0x44, 0x83, 0xf1, 0x42, 0xfc, 0x4d, 0xd8, 0x48, 0x4d, 0xec, 0xd3, 0x59, 0xe4, 0x84, 0x6d, - 0xe5, 0x5a, 0x65, 0x0b, 0x93, 0xd4, 0x72, 0x9f, 0x73, 0x0b, 0x40, 0xee, 0x5b, 0xd8, 0x86, 0x6b, - 0x95, 0x2d, 0x29, 0x03, 0x72, 0xc7, 0x42, 0xe6, 0xd4, 0xc2, 0x0f, 0xdd, 0x9c, 0x53, 0x6b, 0xff, - 0xdd, 0xa9, 0x44, 0x23, 0x75, 0x2a, 0x35, 0x11, 0x3b, 0xd5, 0x14, 0x4e, 0x25, 0xec, 0xcc, 0xa9, - 0x14, 0x18, 0x3b, 0xd5, 0x12, 0x4e, 0x25, 0xec, 0xd8, 0xa9, 0xbb, 0x00, 0x01, 0x0d, 0x69, 0x64, - 0x1f, 0xb1, 0x93, 0x5f, 0xe7, 0x95, 0x7e, 0xe5, 0x8c, 0x5e, 0xb5, 0x4d, 0x18, 0x6a, 0xc7, 0x9d, - 0x47, 0x44, 0x09, 0x92, 0x4f, 0xfc, 0x0e, 0x28, 0x69, 0xae, 0xb5, 0x37, 0x78, 0xf2, 0x65, 0x0c, - 0xf5, 0x0e, 0x28, 0xa9, 0x56, 0xb1, 0x5e, 0xeb, 0x50, 0x79, 0xac, 0x9b, 0x48, 0xc2, 0x35, 0x28, - 0x1b, 0x63, 0x54, 0xce, 0x6a, 0xb6, 0xb2, 0x29, 0xff, 0xf2, 0xf7, 0x1d, 0xa9, 0x5b, 0x87, 0x2a, - 0xf7, 0xbb, 0xdb, 0x04, 0xc8, 0xc2, 0xae, 0xfe, 0x53, 0x86, 0x75, 0x1e, 0xe2, 0x2c, 0xa5, 0x43, - 0xc0, 0x5c, 0x46, 0x03, 0x7b, 0x65, 0x27, 0xad, 0xae, 0xfe, 0xaf, 0x17, 0x57, 0xb5, 0xdc, 0xec, - 0xb0, 0x08, 0x7c, 0x8f, 0x46, 0x47, 0x74, 0x19, 0xe6, 0x3f, 0x3d, 0x7f, 0x9f, 0xce, 0x6e, 0xa6, - 0x5d, 0x78, 0xbb, 0x27, 0xcc, 0x65, 0x3b, 0x46, 0xd3, 0x15, 0xce, 0xff, 0x9b, 0xf3, 0x57, 0xf2, - 0x9b, 0x12, 0x59, 0x4c, 0x94, 0x34, 0x87, 0x59, 0xb1, 0x0b, 0x49, 0x5c, 0xec, 0x9c, 0x38, 0xa3, - 0xf2, 0xbe, 0x82, 0x8c, 0xfa, 0x0a, 0x2a, 0xe5, 0x5b, 0x80, 0x52, 0x2f, 0xf6, 0x38, 0x36, 0x49, - 0xb6, 0x34, 0x07, 0x85, 0x09, 0x0e, 0x4d, 0x57, 0x4b, 0xa0, 0xa2, 0x58, 0xd2, 0x1a, 0x4a, 0xa0, - 0xef, 0x42, 0x6b, 0xba, 0x0c, 0x23, 0xdf, 0xb3, 0x79, 0xab, 0x0b, 0xdb, 0x88, 0xe3, 0x9a, 0x82, - 0xf9, 0x90, 0xf3, 0x1e, 0xc8, 0x0d, 0x09, 0x95, 0x1f, 0xc8, 0x8d, 0x1a, 0xaa, 0x3f, 0x90, 0x1b, - 0x0a, 0x82, 0x07, 0x72, 0xa3, 0x89, 0x5a, 0x0f, 0xe4, 0xc6, 0x06, 0x42, 0x24, 0x6b, 0x75, 0x64, - 0xa5, 0xc5, 0x90, 0xd5, 0xda, 0x26, 0xab, 0x75, 0x95, 0xcf, 0xe3, 0xbb, 0x00, 0xd9, 0x19, 0xb0, - 0xd0, 0xfb, 0x07, 0x07, 0x21, 0x15, 0xfd, 0xf3, 0x02, 0x89, 0x29, 0xc6, 0x9f, 0xd1, 0xf9, 0x61, - 0x74, 0xc4, 0xa3, 0xd6, 0x22, 0x31, 0xa5, 0x2e, 0x01, 0x17, 0x33, 0x96, 0xdf, 0xed, 0xaf, 0x71, - 0x4f, 0xdf, 0x05, 0x25, 0xcd, 0x49, 0xbe, 0x56, 0x61, 0x2a, 0x2c, 0xda, 0x8c, 0xa7, 0xc2, 0x4c, - 0x41, 0x9d, 0xc3, 0x86, 0x18, 0x09, 0xb2, 0x4a, 0x49, 0xd3, 0x4a, 0x3a, 0x23, 0xad, 0xca, 0x59, - 0x5a, 0xdd, 0x82, 0x7a, 0x12, 0x1c, 0x31, 0xf5, 0xbc, 0x7d, 0xd6, 0xf0, 0xc2, 0x11, 0x24, 0x41, - 0xaa, 0x21, 0x6c, 0xac, 0xc8, 0x70, 0x07, 0x60, 0xcf, 0x5f, 0xce, 0xf7, 0x9d, 0x78, 0xc4, 0x96, - 0xb6, 0xaa, 0x24, 0xc7, 0x61, 0xfe, 0xcc, 0xfc, 0xcf, 0x68, 0x90, 0xa4, 0x39, 0x27, 0x18, 0x77, - 0xb9, 0x58, 0xd0, 0x20, 0x4e, 0x74, 0x41, 0x64, 0xbe, 0xcb, 0x39, 0xdf, 0xd5, 0x19, 0x5c, 0x5c, - 0xd9, 0x24, 0x3f, 0xdc, 0x42, 0x5b, 0x2a, 0xaf, 0xb4, 0x25, 0xfc, 0xc1, 0xe9, 0x73, 0x7d, 0x7b, - 0x75, 0x14, 0x4c, 0xed, 0xe5, 0x8f, 0xf4, 0xcf, 0x32, 0xb4, 0x3e, 0x59, 0xd2, 0xe0, 0x38, 0x19, - 0x6a, 0xf1, 0x6d, 0xa8, 0x85, 0x91, 0x13, 0x2d, 0xc3, 0x78, 0x46, 0xea, 0x64, 0x76, 0x0a, 0xc0, - 0x6d, 0x93, 0xa3, 0x48, 0x8c, 0xc6, 0x3f, 0x02, 0xa0, 0x6c, 0xca, 0xb5, 0xf9, 0x7c, 0x75, 0xea, - 0xb9, 0x50, 0xd4, 0xe5, 0xf3, 0x30, 0x9f, 0xae, 0x14, 0x9a, 0x7c, 0xb2, 0xf3, 0xe0, 0x04, 0x3f, - 0x25, 0x85, 0x08, 0x02, 0x6f, 0x33, 0x7f, 0x02, 0x77, 0x7e, 0xc8, 0x8f, 0xa9, 0x50, 0xc5, 0x26, - 0xe7, 0xf7, 0x9d, 0xc8, 0xd9, 0x29, 0x91, 0x18, 0xc5, 0xf0, 0x4f, 0xe8, 0x34, 0xf2, 0x03, 0xde, - 0xa6, 0x0a, 0xf8, 0x87, 0x9c, 0x9f, 0xe0, 0x05, 0x8a, 0xdb, 0x9f, 0x3a, 0x33, 0x27, 0xe0, 0x77, - 0x74, 0xd1, 0x3e, 0xe7, 0xa7, 0xf6, 0x39, 0xc5, 0xf0, 0x9e, 0x13, 0x05, 0xee, 0x53, 0xde, 0xe3, - 0x0a, 0xf8, 0x11, 0xe7, 0x27, 0x78, 0x81, 0xc2, 0x9b, 0xd0, 0xf8, 0xcc, 0x09, 0xe6, 0xee, 0xfc, - 0x50, 0xf4, 0x21, 0x85, 0xa4, 0x34, 0xdb, 0xb1, 0x3b, 0x3f, 0xf0, 0xc5, 0x35, 0xac, 0x10, 0x41, - 0xa8, 0xef, 0x41, 0x4d, 0x9c, 0x2d, 0xbb, 0x42, 0x74, 0x42, 0xc6, 0x44, 0x8c, 0x83, 0xe6, 0xa4, - 0xd7, 0xd3, 0x4d, 0x13, 0x49, 0xe2, 0x3e, 0x51, 0x7f, 0x23, 0x81, 0x92, 0x1e, 0x24, 0x9b, 0xf3, - 0x8c, 0xb1, 0xa1, 0x0b, 0xa8, 0x35, 0x18, 0xe9, 0xe3, 0x89, 0x85, 0x24, 0x36, 0xf4, 0xf5, 0x34, - 0xa3, 0xa7, 0x0f, 0xf5, 0xbe, 0x18, 0x1e, 0xf5, 0x1f, 0xeb, 0xbd, 0x89, 0x35, 0x18, 0x1b, 0xa8, - 0xc2, 0x84, 0x5d, 0xad, 0x6f, 0xf7, 0x35, 0x4b, 0x43, 0x32, 0xa3, 0x06, 0x6c, 0xde, 0x34, 0xb4, - 0x21, 0xaa, 0xe2, 0x0d, 0x58, 0x9b, 0x18, 0xda, 0x43, 0x6d, 0x30, 0xd4, 0xba, 0x43, 0x1d, 0xd5, - 0x98, 0xae, 0x31, 0xb6, 0xec, 0x7b, 0xe3, 0x89, 0xd1, 0x47, 0x75, 0x36, 0x78, 0x32, 0x52, 0xeb, - 0xf5, 0xf4, 0x5d, 0x8b, 0x43, 0x1a, 0xf1, 0x3d, 0x57, 0x03, 0x99, 0xcd, 0xd0, 0xaa, 0x0e, 0x90, - 0x45, 0xa8, 0x38, 0xa2, 0x2b, 0xe7, 0x4d, 0x7b, 0xa7, 0x7b, 0x86, 0xfa, 0x0b, 0x09, 0x20, 0x8b, - 0x1c, 0xbe, 0x9d, 0xbd, 0x79, 0x4e, 0x0d, 0x9b, 0x02, 0x76, 0xf6, 0xcb, 0xe7, 0x87, 0x85, 0x17, - 0x4c, 0x79, 0xb5, 0x09, 0x08, 0xd5, 0xff, 0xf4, 0x8e, 0xb1, 0xa1, 0x99, 0xb7, 0xcf, 0x9a, 0xa3, - 0x98, 0xfb, 0xb9, 0x1f, 0x0a, 0x89, 0xa9, 0x37, 0x1f, 0x6b, 0x7f, 0x25, 0xc1, 0xc6, 0x8a, 0x1b, - 0xe7, 0x2e, 0x52, 0x68, 0xa4, 0xe5, 0xd7, 0x68, 0xa4, 0xa5, 0x5c, 0xd5, 0xbf, 0x8e, 0x33, 0x2c, - 0x78, 0x69, 0xfa, 0x9f, 0xfd, 0xbe, 0x7a, 0x9d, 0xe0, 0x75, 0x01, 0xb2, 0xaa, 0x60, 0xef, 0x84, - 0xc2, 0xcf, 0x89, 0xcb, 0xab, 0xb5, 0x13, 0xff, 0x9e, 0x88, 0xdf, 0x09, 0x02, 0xab, 0xfe, 0x4e, - 0x82, 0x66, 0x5e, 0x7c, 0xee, 0xa1, 0xfc, 0xef, 0xcf, 0xe1, 0x6e, 0x21, 0x29, 0xc4, 0xcd, 0xf0, - 0xce, 0x79, 0xe7, 0xc8, 0xfa, 0xf0, 0xe9, 0xbc, 0xb8, 0xf1, 0xc7, 0x32, 0x40, 0xf6, 0xbe, 0xc7, - 0x17, 0xa0, 0x15, 0x0f, 0x85, 0x76, 0x4f, 0x9b, 0x98, 0xac, 0x20, 0x37, 0xe1, 0x32, 0xd1, 0x77, - 0x87, 0x83, 0x9e, 0x66, 0xda, 0xfd, 0x41, 0xdf, 0x66, 0x75, 0x33, 0xd2, 0xac, 0xde, 0x0e, 0x92, - 0xf0, 0x5b, 0x70, 0xc1, 0x1a, 0x8f, 0xed, 0x91, 0x66, 0x3c, 0xb6, 0x7b, 0xc3, 0x89, 0x69, 0xe9, - 0xc4, 0x44, 0xe5, 0x42, 0x65, 0x56, 0x98, 0x81, 0x81, 0x71, 0x5f, 0x37, 0x59, 0xd9, 0xda, 0x44, - 0xb3, 0x74, 0x7b, 0x38, 0x18, 0x0d, 0x2c, 0xbd, 0x8f, 0x64, 0xdc, 0x86, 0x4b, 0x44, 0xff, 0x64, - 0xa2, 0x9b, 0x56, 0x51, 0x52, 0x65, 0x15, 0x3a, 0x30, 0x4c, 0x8b, 0x55, 0xbf, 0xe0, 0xa2, 0x1a, - 0xfe, 0x1a, 0x5c, 0x34, 0x75, 0xf2, 0x70, 0xd0, 0xd3, 0xed, 0x7c, 0x75, 0xd7, 0xf1, 0x25, 0x40, - 0x96, 0xd9, 0xef, 0x16, 0xb8, 0x0d, 0xe6, 0x06, 0xf3, 0xae, 0x3b, 0x31, 0x1f, 0x23, 0x85, 0x2d, - 0xd5, 0x1b, 0x90, 0xde, 0x64, 0x60, 0xd9, 0x5d, 0xa2, 0x6b, 0x1f, 0xeb, 0xc4, 0x1e, 0xef, 0xea, - 0x06, 0x02, 0x7c, 0x19, 0xf0, 0x48, 0xb7, 0x76, 0xc6, 0x62, 0x6f, 0xda, 0x70, 0x38, 0x7e, 0xa4, - 0xf7, 0xd1, 0x1a, 0x46, 0xd0, 0xb4, 0x74, 0x43, 0x33, 0xac, 0xd8, 0x81, 0x66, 0xf7, 0x07, 0xcf, - 0x5f, 0x76, 0x4a, 0x9f, 0xbf, 0xec, 0x94, 0xbe, 0x7c, 0xd9, 0x91, 0x7e, 0x7e, 0xd2, 0x91, 0xfe, - 0x70, 0xd2, 0x91, 0x9e, 0x9d, 0x74, 0xa4, 0xe7, 0x27, 0x1d, 0xe9, 0xaf, 0x27, 0x1d, 0xe9, 0x8b, - 0x93, 0x4e, 0xe9, 0xcb, 0x93, 0x8e, 0xf4, 0xeb, 0x57, 0x9d, 0xd2, 0xf3, 0x57, 0x9d, 0xd2, 0xe7, - 0xaf, 0x3a, 0xa5, 0x9f, 0xd4, 0xf9, 0xdf, 0xaf, 0xc5, 0xde, 0x5e, 0x8d, 0xff, 0xfa, 0xba, 0xf5, - 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x9d, 0x09, 0x36, 0x55, 0x13, 0x00, 0x00, + 0xc5, 0x32, 0xa4, 0x60, 0x42, 0x6d, 0xa8, 0x6c, 0x6d, 0x2a, 0x2c, 0xc8, 0xb6, 0x92, 0x71, 0xd6, + 0x96, 0x67, 0x5b, 0x72, 0x42, 0xb8, 0xa8, 0x34, 0x9e, 0x9e, 0x19, 0xd5, 0x5a, 0x96, 0x91, 0xe4, + 0x6c, 0x86, 0x13, 0x17, 0xaa, 0x28, 0x4e, 0x5c, 0xb8, 0x50, 0xdc, 0xb8, 0x50, 0xc5, 0x3f, 0x92, + 0x2a, 0x2e, 0x39, 0x2e, 0x1c, 0x52, 0x64, 0x72, 0x60, 0x39, 0x50, 0xb5, 0xc5, 0x91, 0x13, 0xd5, + 0xdd, 0xfa, 0xf4, 0xcc, 0x40, 0xc8, 0xee, 0x4d, 0xef, 0xbd, 0xdf, 0xeb, 0xfe, 0xa9, 0xdf, 0x87, + 0x5e, 0x0b, 0xd6, 0x3c, 0xd7, 0x73, 0x83, 0xed, 0x45, 0xe0, 0x47, 0x3e, 0x6e, 0x4c, 0xfd, 0x20, + 0xa2, 0x4f, 0x17, 0x7b, 0x9b, 0xdf, 0x3b, 0x74, 0xa3, 0xa3, 0xe5, 0xde, 0xf6, 0xd4, 0xf7, 0x6e, + 0x1e, 0xfa, 0x87, 0xfe, 0x4d, 0x0e, 0xd8, 0x5b, 0x1e, 0x70, 0x89, 0x0b, 0xfc, 0x49, 0x38, 0x6e, + 0xb6, 0xf9, 0x2a, 0xf6, 0x74, 0x19, 0x46, 0xbe, 0x67, 0x47, 0xc7, 0x0b, 0x1a, 0x0a, 0x8b, 0xfa, + 0xcf, 0x32, 0x34, 0x1f, 0x05, 0x6e, 0x44, 0x09, 0xfd, 0xd9, 0x92, 0x86, 0x11, 0xde, 0x05, 0x88, + 0x5c, 0x8f, 0x86, 0x34, 0x70, 0x69, 0xd8, 0x96, 0xae, 0x55, 0xb6, 0xd6, 0xde, 0xbf, 0xb4, 0x9d, + 0x6c, 0xbc, 0x6d, 0xb9, 0x1e, 0x35, 0xb9, 0xad, 0xbb, 0xf9, 0xec, 0xc5, 0xd5, 0xd2, 0x5f, 0x5f, + 0x5c, 0xc5, 0xbb, 0x01, 0x75, 0x66, 0x33, 0x7f, 0x6a, 0xa5, 0x7e, 0x24, 0xb7, 0x06, 0xfe, 0x10, + 0x6a, 0xa6, 0xbf, 0x0c, 0xa6, 0xb4, 0x5d, 0xbe, 0x26, 0x6d, 0xad, 0xbf, 0x7f, 0x3d, 0x5b, 0x2d, + 0xbf, 0xf3, 0xb6, 0x00, 0xe9, 0xf3, 0xa5, 0x47, 0x62, 0x07, 0x7c, 0x07, 0x1a, 0x1e, 0x8d, 0x9c, + 0x7d, 0x27, 0x72, 0xda, 0x15, 0x4e, 0xa5, 0x9d, 0x39, 0x8f, 0x68, 0x14, 0xb8, 0xd3, 0x51, 0x6c, + 0xef, 0xca, 0xcf, 0x5e, 0x5c, 0x95, 0x48, 0x8a, 0xc7, 0xb7, 0xe0, 0xad, 0xf0, 0x53, 0x77, 0x61, + 0xcf, 0x9c, 0x3d, 0x3a, 0xb3, 0x9f, 0x38, 0x33, 0x77, 0xdf, 0x89, 0x5c, 0x7f, 0xde, 0xfe, 0xa2, + 0x7e, 0x4d, 0xda, 0x6a, 0x90, 0x8b, 0xcc, 0x3a, 0x64, 0xc6, 0x87, 0xa9, 0x0d, 0x7f, 0x04, 0xdf, + 0xcc, 0x39, 0x4d, 0xfd, 0xe5, 0x3c, 0xca, 0xbb, 0xfe, 0x43, 0xb8, 0xb6, 0x53, 0xd7, 0x1e, 0x43, + 0x64, 0xfe, 0xea, 0x55, 0x80, 0xec, 0x35, 0x70, 0x1d, 0x2a, 0xda, 0xee, 0x00, 0x95, 0x70, 0x03, + 0x64, 0x32, 0x19, 0xea, 0x48, 0x52, 0x37, 0xa0, 0x15, 0xbf, 0x74, 0xb8, 0xf0, 0xe7, 0x21, 0x55, + 0xef, 0x40, 0x53, 0x0f, 0x02, 0x3f, 0xe8, 0xd3, 0xc8, 0x71, 0x67, 0x21, 0xbe, 0x01, 0xd5, 0x9e, + 0xb3, 0x0c, 0x69, 0x5b, 0xe2, 0x87, 0x95, 0x3b, 0x7a, 0x0e, 0xe3, 0x36, 0x22, 0x20, 0xea, 0xdf, + 0x25, 0x80, 0x2c, 0x20, 0xf8, 0x07, 0x50, 0xe3, 0xbc, 0x93, 0xb0, 0x5d, 0xce, 0x7c, 0x39, 0x59, + 0x6d, 0xdf, 0x59, 0x44, 0x34, 0xe0, 0x27, 0x55, 0x22, 0x31, 0x16, 0x7f, 0x1f, 0xea, 0xa1, 0xe3, + 0x2d, 0x66, 0x34, 0x6c, 0x97, 0xb9, 0x1b, 0xca, 0xdc, 0x4c, 0x6e, 0x88, 0x1d, 0x12, 0x18, 0xbe, + 0x0d, 0x0a, 0x7d, 0x4a, 0xbd, 0xc5, 0xcc, 0x09, 0xc2, 0x38, 0x2c, 0x38, 0x47, 0x33, 0x36, 0xc5, + 0x5e, 0x19, 0x14, 0x7f, 0x08, 0x70, 0xe4, 0x86, 0x91, 0x7f, 0x18, 0x38, 0x5e, 0xd8, 0x96, 0xb9, + 0xe3, 0xc5, 0xcc, 0x71, 0x27, 0xb1, 0xc5, 0x9e, 0x39, 0xb0, 0xaa, 0x41, 0x4d, 0x70, 0xc1, 0xd7, + 0xa1, 0xc9, 0x73, 0x2b, 0x72, 0xbc, 0x85, 0xed, 0x85, 0x3c, 0xa7, 0x2a, 0x64, 0x2d, 0xd5, 0x8d, + 0x42, 0x7c, 0x09, 0xaa, 0x4f, 0x9c, 0xd9, 0x52, 0x1c, 0xa1, 0x44, 0x84, 0xa0, 0xfe, 0xae, 0x0c, + 0xeb, 0xc5, 0x94, 0xc1, 0x1f, 0x80, 0xcc, 0x6a, 0x21, 0x3e, 0xea, 0x77, 0xcf, 0x4b, 0xad, 0x58, + 0xb4, 0x8e, 0x17, 0x94, 0x70, 0x07, 0xfc, 0x5d, 0xc0, 0x1e, 0xd7, 0xd9, 0x07, 0x8e, 0xe7, 0xce, + 0x8e, 0xed, 0xb9, 0xe3, 0x89, 0xf4, 0x56, 0x08, 0x12, 0x96, 0x7b, 0xdc, 0x60, 0x38, 0x1e, 0xc5, + 0x18, 0xe4, 0x23, 0x3a, 0x5b, 0xb4, 0x65, 0x6e, 0xe7, 0xcf, 0x4c, 0xb7, 0x9c, 0xbb, 0x51, 0xbb, + 0x2a, 0x74, 0xec, 0x59, 0x3d, 0x06, 0xc8, 0x76, 0xc2, 0x6b, 0x50, 0x9f, 0x18, 0x1f, 0x1b, 0xe3, + 0x47, 0x06, 0x2a, 0x31, 0xa1, 0x37, 0x9e, 0x18, 0x96, 0x4e, 0x90, 0x84, 0x15, 0xa8, 0xde, 0xd7, + 0x26, 0xf7, 0x75, 0x54, 0xc6, 0x2d, 0x50, 0x76, 0x06, 0xa6, 0x35, 0xbe, 0x4f, 0xb4, 0x11, 0xaa, + 0x60, 0x0c, 0xeb, 0xdc, 0x92, 0xe9, 0x64, 0xe6, 0x6a, 0x4e, 0x46, 0x23, 0x8d, 0x3c, 0x46, 0x55, + 0x96, 0x88, 0x03, 0xe3, 0xde, 0x18, 0xd5, 0x70, 0x13, 0x1a, 0xa6, 0xa5, 0x59, 0xba, 0xa9, 0x5b, + 0xa8, 0xae, 0x7e, 0x04, 0x35, 0xb1, 0xf5, 0x9b, 0x25, 0x91, 0x7a, 0x0c, 0x8d, 0x24, 0xee, 0x6f, + 0x98, 0x86, 0x69, 0xd0, 0xca, 0xb9, 0xa0, 0x9d, 0x8a, 0x76, 0xe5, 0x54, 0xb4, 0xd5, 0x3f, 0x57, + 0x41, 0x49, 0x53, 0x07, 0x5f, 0x01, 0x45, 0x54, 0xad, 0x3b, 0x8f, 0x78, 0x5c, 0xe5, 0x9d, 0x12, + 0x69, 0x70, 0xd5, 0x60, 0x1e, 0xe1, 0xeb, 0xb0, 0x26, 0xcc, 0x07, 0x33, 0xdf, 0x89, 0xc4, 0x5e, + 0x3b, 0x25, 0x02, 0x5c, 0x79, 0x8f, 0xe9, 0x30, 0x82, 0x4a, 0xb8, 0xf4, 0xf8, 0x4e, 0x12, 0x61, + 0x8f, 0xf8, 0x32, 0xd4, 0xc2, 0xe9, 0x11, 0xf5, 0x1c, 0x1e, 0xc1, 0x0b, 0x24, 0x96, 0xf0, 0xb7, + 0x60, 0xfd, 0xe7, 0x34, 0xf0, 0xed, 0xe8, 0x28, 0xa0, 0xe1, 0x91, 0x3f, 0xdb, 0xe7, 0xd1, 0x94, + 0x48, 0x8b, 0x69, 0xad, 0x44, 0x89, 0xdf, 0x8b, 0x61, 0x19, 0xaf, 0x1a, 0xe7, 0x25, 0x91, 0x26, + 0xd3, 0xf7, 0x12, 0x6e, 0x37, 0x00, 0xe5, 0x70, 0x82, 0x60, 0x9d, 0x13, 0x94, 0xc8, 0x7a, 0x8a, + 0x14, 0x24, 0x35, 0x58, 0x9f, 0xd3, 0x43, 0x27, 0x72, 0x9f, 0x50, 0x3b, 0x5c, 0x38, 0xf3, 0xb0, + 0xdd, 0x58, 0xed, 0xd4, 0xdd, 0xe5, 0xf4, 0x53, 0x1a, 0x99, 0x0b, 0x67, 0x1e, 0x9f, 0x74, 0x2b, + 0xf1, 0x60, 0xba, 0x10, 0x7f, 0x1b, 0x36, 0xd2, 0x25, 0xf6, 0xe9, 0x2c, 0x72, 0xc2, 0xb6, 0x72, + 0xad, 0xb2, 0x85, 0x49, 0xba, 0x72, 0x9f, 0x6b, 0x0b, 0x40, 0xce, 0x2d, 0x6c, 0xc3, 0xb5, 0xca, + 0x96, 0x94, 0x01, 0x39, 0xb1, 0x90, 0x91, 0x5a, 0xf8, 0xa1, 0x9b, 0x23, 0xb5, 0xf6, 0xbf, 0x49, + 0x25, 0x1e, 0x29, 0xa9, 0x74, 0x89, 0x98, 0x54, 0x53, 0x90, 0x4a, 0xd4, 0x19, 0xa9, 0x14, 0x18, + 0x93, 0x6a, 0x09, 0x52, 0x89, 0x3a, 0x26, 0x75, 0x17, 0x20, 0xa0, 0x21, 0x8d, 0xec, 0x23, 0x76, + 0xf2, 0xeb, 0xbc, 0xd2, 0xaf, 0x9c, 0xd1, 0x74, 0xb6, 0x09, 0x43, 0xed, 0xb8, 0xf3, 0x88, 0x28, + 0x41, 0xf2, 0x88, 0xdf, 0x01, 0x25, 0xcd, 0xb5, 0xf6, 0x06, 0x4f, 0xbe, 0x4c, 0xa1, 0xde, 0x01, + 0x25, 0xf5, 0x2a, 0xd6, 0x6b, 0x1d, 0x2a, 0x8f, 0x75, 0x13, 0x49, 0xb8, 0x06, 0x65, 0x63, 0x8c, + 0xca, 0x59, 0xcd, 0x56, 0x36, 0xe5, 0x5f, 0xfd, 0xa1, 0x23, 0x75, 0xeb, 0x50, 0xe5, 0xbc, 0xbb, + 0x4d, 0x80, 0x2c, 0xec, 0xea, 0xbf, 0x64, 0x58, 0xe7, 0x21, 0xce, 0x52, 0x3a, 0x04, 0xcc, 0x6d, + 0x34, 0xb0, 0x57, 0xde, 0xa4, 0xd5, 0xd5, 0xff, 0xfd, 0xe2, 0xaa, 0x96, 0x9b, 0x05, 0x16, 0x81, + 0xef, 0xd1, 0xe8, 0x88, 0x2e, 0xc3, 0xfc, 0xa3, 0xe7, 0xef, 0xd3, 0xd9, 0xcd, 0xb4, 0x9d, 0x6e, + 0xf7, 0xc4, 0x72, 0xd9, 0x1b, 0xa3, 0xe9, 0x8a, 0xe6, 0xab, 0xe6, 0xfc, 0x95, 0xfc, 0x4b, 0x89, + 0x2c, 0x26, 0x4a, 0x9a, 0xc3, 0xac, 0xd8, 0x85, 0x25, 0x2e, 0x76, 0x2e, 0x9c, 0x51, 0x79, 0x5f, + 0x43, 0x46, 0x7d, 0x0d, 0x95, 0xf2, 0x1d, 0x40, 0x29, 0x8b, 0x3d, 0x8e, 0x4d, 0x92, 0x2d, 0xcd, + 0x41, 0xb1, 0x04, 0x87, 0xa6, 0xbb, 0x25, 0x50, 0x51, 0x2c, 0x69, 0x0d, 0x25, 0xd0, 0x77, 0xa1, + 0x15, 0xcf, 0x63, 0xbc, 0xd5, 0x85, 0x6d, 0xc4, 0x71, 0x4d, 0xa1, 0x7c, 0xc8, 0x75, 0x0f, 0xe4, + 0x86, 0x84, 0xca, 0x0f, 0xe4, 0x46, 0x0d, 0xd5, 0x1f, 0xc8, 0x0d, 0x05, 0xc1, 0x03, 0xb9, 0xd1, + 0x44, 0xad, 0x07, 0x72, 0x63, 0x03, 0x21, 0x92, 0xb5, 0x3a, 0xb2, 0xd2, 0x62, 0xc8, 0x6a, 0x6d, + 0x93, 0xd5, 0xba, 0xca, 0xe7, 0xf1, 0x5d, 0x80, 0xec, 0x0c, 0x58, 0xe8, 0xfd, 0x83, 0x83, 0x90, + 0x8a, 0xfe, 0x79, 0x81, 0xc4, 0x12, 0xd3, 0xcf, 0xe8, 0xfc, 0x30, 0x3a, 0xe2, 0x51, 0x6b, 0x91, + 0x58, 0x52, 0x97, 0x80, 0x8b, 0x19, 0xbb, 0xeb, 0xb8, 0xc1, 0xeb, 0x7c, 0xa7, 0xef, 0x82, 0x92, + 0xe6, 0x24, 0xdf, 0xab, 0x30, 0xde, 0x15, 0xd7, 0x8c, 0xc7, 0xbb, 0xcc, 0x41, 0x9d, 0xc3, 0x86, + 0x18, 0x09, 0xb2, 0x4a, 0x49, 0xd3, 0x4a, 0x3a, 0x23, 0xad, 0xca, 0x59, 0x5a, 0xdd, 0x82, 0x7a, + 0x12, 0x1c, 0x31, 0xbe, 0xbc, 0x7d, 0xd6, 0x14, 0xc2, 0x11, 0x24, 0x41, 0xaa, 0x21, 0x6c, 0xac, + 0xd8, 0x70, 0x07, 0x60, 0xcf, 0x5f, 0xce, 0xf7, 0x9d, 0x78, 0x56, 0x96, 0xb6, 0xaa, 0x24, 0xa7, + 0x61, 0x7c, 0x66, 0xfe, 0x67, 0x34, 0x48, 0xd2, 0x9c, 0x0b, 0x4c, 0xbb, 0x5c, 0x2c, 0x68, 0x10, + 0x27, 0xba, 0x10, 0x32, 0xee, 0x72, 0x8e, 0xbb, 0x3a, 0x83, 0x8b, 0x2b, 0x2f, 0xc9, 0x0f, 0xb7, + 0xd0, 0x96, 0xca, 0x2b, 0x6d, 0x09, 0x7f, 0x70, 0xfa, 0x5c, 0xdf, 0x5e, 0x9d, 0xe9, 0xd2, 0xf5, + 0xf2, 0x47, 0xfa, 0x17, 0x19, 0x5a, 0x9f, 0x2c, 0x69, 0x70, 0x9c, 0x4c, 0xa7, 0xf8, 0x36, 0xd4, + 0xc2, 0xc8, 0x89, 0x96, 0x61, 0x3c, 0x23, 0x75, 0xb2, 0x75, 0x0a, 0xc0, 0x6d, 0x93, 0xa3, 0x48, + 0x8c, 0xc6, 0x3f, 0x06, 0xa0, 0x6c, 0x5c, 0xe5, 0x77, 0x8d, 0xd3, 0x73, 0x7f, 0xd1, 0x97, 0x0f, + 0xb6, 0x7c, 0xba, 0x52, 0x68, 0xf2, 0xc8, 0xce, 0x83, 0x0b, 0xfc, 0x94, 0x14, 0x22, 0x04, 0xbc, + 0xcd, 0xf8, 0x04, 0xee, 0xfc, 0x90, 0x1f, 0x53, 0xa1, 0x8a, 0x4d, 0xae, 0xef, 0x3b, 0x91, 0xb3, + 0x53, 0x22, 0x31, 0x8a, 0xe1, 0x9f, 0xd0, 0x69, 0xe4, 0x07, 0xbc, 0x4d, 0x15, 0xf0, 0x0f, 0xb9, + 0x3e, 0xc1, 0x0b, 0x14, 0x5f, 0x7f, 0xea, 0xcc, 0x9c, 0x80, 0x7f, 0xa3, 0x8b, 0xeb, 0x73, 0x7d, + 0xba, 0x3e, 0x97, 0x18, 0xde, 0x73, 0xa2, 0xc0, 0x7d, 0xca, 0x7b, 0x5c, 0x01, 0x3f, 0xe2, 0xfa, + 0x04, 0x2f, 0x50, 0x78, 0x13, 0x1a, 0x9f, 0x39, 0xc1, 0xdc, 0x9d, 0x1f, 0x8a, 0x3e, 0xa4, 0x90, + 0x54, 0x66, 0x6f, 0xec, 0xce, 0x0f, 0x7c, 0xf1, 0x19, 0x56, 0x88, 0x10, 0xd4, 0xf7, 0xa0, 0x26, + 0xce, 0x96, 0x7d, 0x42, 0x74, 0x42, 0xc6, 0x44, 0x8c, 0x83, 0xe6, 0xa4, 0xd7, 0xd3, 0x4d, 0x13, + 0x49, 0xe2, 0x7b, 0xa2, 0xfe, 0x56, 0x02, 0x25, 0x3d, 0x48, 0x36, 0xe7, 0x19, 0x63, 0x43, 0x17, + 0x50, 0x6b, 0x30, 0xd2, 0xc7, 0x13, 0x0b, 0x49, 0x6c, 0xe8, 0xeb, 0x69, 0x46, 0x4f, 0x1f, 0xea, + 0x7d, 0x31, 0x3c, 0xea, 0x3f, 0xd1, 0x7b, 0x13, 0x6b, 0x30, 0x36, 0x50, 0x85, 0x19, 0xbb, 0x5a, + 0xdf, 0xee, 0x6b, 0x96, 0x86, 0x64, 0x26, 0x0d, 0xd8, 0xbc, 0x69, 0x68, 0x43, 0x54, 0xc5, 0x1b, + 0xb0, 0x36, 0x31, 0xb4, 0x87, 0xda, 0x60, 0xa8, 0x75, 0x87, 0x3a, 0xaa, 0x31, 0x5f, 0x63, 0x6c, + 0xd9, 0xf7, 0xc6, 0x13, 0xa3, 0x8f, 0xea, 0x6c, 0xf0, 0x64, 0xa2, 0xd6, 0xeb, 0xe9, 0xbb, 0x16, + 0x87, 0x34, 0xe2, 0xef, 0x5c, 0x0d, 0x64, 0x36, 0x43, 0xab, 0x3a, 0x40, 0x16, 0xa1, 0xe2, 0x88, + 0xae, 0x9c, 0x37, 0xed, 0x9d, 0xee, 0x19, 0xea, 0x2f, 0x25, 0x80, 0x2c, 0x72, 0xf8, 0x76, 0x76, + 0x79, 0x39, 0x35, 0x6c, 0x0a, 0xd8, 0xd9, 0x57, 0x98, 0x1f, 0x15, 0xae, 0x22, 0xe5, 0xd5, 0x26, + 0x20, 0x5c, 0xff, 0xdb, 0x85, 0xc4, 0x86, 0x66, 0x7e, 0x7d, 0xd6, 0x1c, 0xc5, 0xdc, 0xcf, 0x79, + 0x28, 0x24, 0x96, 0xde, 0x7c, 0xac, 0xfd, 0xb5, 0x04, 0x1b, 0x2b, 0x34, 0xce, 0xdd, 0xa4, 0xd0, + 0x48, 0xcb, 0xaf, 0xd1, 0x48, 0x4b, 0xb9, 0xaa, 0x7f, 0x1d, 0x32, 0x2c, 0x78, 0x69, 0xfa, 0x9f, + 0x7d, 0xbf, 0x7a, 0x9d, 0xe0, 0x75, 0x01, 0xb2, 0xaa, 0x60, 0xf7, 0x84, 0xc2, 0x5f, 0x86, 0xcb, + 0xab, 0xb5, 0x13, 0xff, 0x67, 0x88, 0xef, 0x09, 0x02, 0xab, 0xfe, 0x5e, 0x82, 0x66, 0xde, 0x7c, + 0xee, 0xa1, 0xfc, 0xff, 0xf7, 0xda, 0x6e, 0x21, 0x29, 0xc4, 0x97, 0xe1, 0x9d, 0xf3, 0xce, 0x91, + 0xf5, 0xe1, 0xd3, 0x79, 0x71, 0xe3, 0x4f, 0x65, 0x80, 0xec, 0xa2, 0x8e, 0x2f, 0x40, 0x2b, 0x1e, + 0x0a, 0xed, 0x9e, 0x36, 0x31, 0x59, 0x41, 0x6e, 0xc2, 0x65, 0xa2, 0xef, 0x0e, 0x07, 0x3d, 0xcd, + 0xb4, 0xfb, 0x83, 0xbe, 0xcd, 0xea, 0x66, 0xa4, 0x59, 0xbd, 0x1d, 0x24, 0xe1, 0xb7, 0xe0, 0x82, + 0x35, 0x1e, 0xdb, 0x23, 0xcd, 0x78, 0x6c, 0xf7, 0x86, 0x13, 0xd3, 0xd2, 0x89, 0x89, 0xca, 0x85, + 0xca, 0xac, 0xb0, 0x05, 0x06, 0xc6, 0x7d, 0xdd, 0x64, 0x65, 0x6b, 0x13, 0xcd, 0xd2, 0xed, 0xe1, + 0x60, 0x34, 0xb0, 0xf4, 0x3e, 0x92, 0x71, 0x1b, 0x2e, 0x11, 0xfd, 0x93, 0x89, 0x6e, 0x5a, 0x45, + 0x4b, 0x95, 0x55, 0xe8, 0xc0, 0x30, 0x2d, 0x56, 0xfd, 0x42, 0x8b, 0x6a, 0xf8, 0x1b, 0x70, 0xd1, + 0xd4, 0xc9, 0xc3, 0x41, 0x4f, 0xb7, 0xf3, 0xd5, 0x5d, 0xc7, 0x97, 0x00, 0x59, 0x66, 0xbf, 0x5b, + 0xd0, 0x36, 0x18, 0x0d, 0xc6, 0xae, 0x3b, 0x31, 0x1f, 0x23, 0x85, 0x6d, 0xd5, 0x1b, 0x90, 0xde, + 0x64, 0x60, 0xd9, 0x5d, 0xa2, 0x6b, 0x1f, 0xeb, 0xc4, 0x1e, 0xef, 0xea, 0x06, 0x02, 0x7c, 0x19, + 0xf0, 0x48, 0xb7, 0x76, 0xc6, 0xe2, 0xdd, 0xb4, 0xe1, 0x70, 0xfc, 0x48, 0xef, 0xa3, 0x35, 0x8c, + 0xa0, 0x69, 0xe9, 0x86, 0x66, 0x58, 0x31, 0x81, 0x66, 0xf7, 0x87, 0xcf, 0x5f, 0x76, 0x4a, 0x9f, + 0xbf, 0xec, 0x94, 0xbe, 0x7c, 0xd9, 0x91, 0x7e, 0x71, 0xd2, 0x91, 0xfe, 0x78, 0xd2, 0x91, 0x9e, + 0x9d, 0x74, 0xa4, 0xe7, 0x27, 0x1d, 0xe9, 0x6f, 0x27, 0x1d, 0xe9, 0x8b, 0x93, 0x4e, 0xe9, 0xcb, + 0x93, 0x8e, 0xf4, 0x9b, 0x57, 0x9d, 0xd2, 0xf3, 0x57, 0x9d, 0xd2, 0xe7, 0xaf, 0x3a, 0xa5, 0x9f, + 0xd6, 0xf9, 0xdf, 0xac, 0xc5, 0xde, 0x5e, 0x8d, 0xff, 0xc3, 0xba, 0xf5, 0x9f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x6d, 0x45, 0xe3, 0xd6, 0x25, 0x13, 0x00, 0x00, } func (x ErrorCause) String() string { @@ -2262,33 +2208,6 @@ func (this *TimeSeries) Equal(that interface{}) bool { } return true } -func (this *LabelPair) Equal(that interface{}) bool { - if that == nil { - return this == nil - } - - that1, ok := that.(*LabelPair) - if !ok { - that2, ok := that.(LabelPair) - if ok { - that1 = &that2 - } else { - return false - } - } - if that1 == nil { - return this == nil - } else if this == nil { - return false - } - if !bytes.Equal(this.Name, that1.Name) { - return false - } - if !bytes.Equal(this.Value, that1.Value) { - return false - } - return true -} func (this *Sample) Equal(that interface{}) bool { if that == nil { return this == nil @@ -3297,17 +3216,6 @@ func (this *TimeSeries) GoString() string { s = append(s, "}") return strings.Join(s, "") } -func (this *LabelPair) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 6) - s = append(s, "&mimirpb.LabelPair{") - s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") - s = append(s, "Value: "+fmt.Sprintf("%#v", this.Value)+",\n") - s = append(s, "}") - return strings.Join(s, "") -} func (this *Sample) GoString() string { if this == nil { return "nil" @@ -3908,43 +3816,6 @@ func (m *TimeSeries) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *LabelPair) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LabelPair) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LabelPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Value) > 0 { - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintMimir(dAtA, i, uint64(len(m.Value))) - i-- - dAtA[i] = 0x12 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintMimir(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *Sample) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -5187,23 +5058,6 @@ func (m *TimeSeries) Size() (n int) { return n } -func (m *LabelPair) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovMimir(uint64(l)) - } - l = len(m.Value) - if l > 0 { - n += 1 + l + sovMimir(uint64(l)) - } - return n -} - func (m *Sample) Size() (n int) { if m == nil { return 0 @@ -5808,17 +5662,6 @@ func (this *TimeSeries) String() string { }, "") return s } -func (this *LabelPair) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&LabelPair{`, - `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `Value:` + fmt.Sprintf("%v", this.Value) + `,`, - `}`, - }, "") - return s -} func (this *Sample) String() string { if this == nil { return "nil" @@ -6704,127 +6547,6 @@ func (m *TimeSeries) Unmarshal(dAtA []byte) error { } return nil } -func (m *LabelPair) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMimir - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LabelPair: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LabelPair: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMimir - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthMimir - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthMimir - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...) - if m.Name == nil { - m.Name = []byte{} - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMimir - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthMimir - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthMimir - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) - if m.Value == nil { - m.Value = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMimir(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthMimir - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthMimir - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *Sample) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/mimirpb/mimir.proto b/pkg/mimirpb/mimir.proto index cd484616fd4..85ffcd7f832 100644 --- a/pkg/mimirpb/mimir.proto +++ b/pkg/mimirpb/mimir.proto @@ -13,7 +13,7 @@ package cortexpb; option go_package = "mimirpb"; import "github.com/gogo/protobuf/gogoproto/gogo.proto"; -import "github.com/grafana/mimir/pkg/mimirpb/mimir_custom_types.proto"; +import "mimir_custom_types.proto"; option (gogoproto.marshaler_all) = true; option (gogoproto.unmarshaler_all) = true; @@ -66,11 +66,6 @@ message TimeSeries { repeated Histogram histograms = 4 [(gogoproto.nullable) = false]; } -message LabelPair { - bytes name = 1; - bytes value = 2; -} - message Sample { // Fields order MUST match promql.FPoint so that we can cast types between them. int64 timestamp_ms = 2; diff --git a/pkg/scheduler/queue/baseline.txt b/pkg/scheduler/queue/baseline.txt new file mode 100644 index 00000000000..ba4ba0924f2 --- /dev/null +++ b/pkg/scheduler/queue/baseline.txt @@ -0,0 +1,24 @@ +goos: linux +goarch: amd64 +pkg: github.com/grafana/mimir/pkg/scheduler/queue +cpu: AMD Ryzen 9 PRO 6950H with Radeon Graphics +BenchmarkConcurrentQueueOperations/1_tenants/10_concurrent_producers/16_concurrent_consumers-16 3375270 3582 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/10_concurrent_producers/160_concurrent_consumers-16 3158005 3817 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/10_concurrent_producers/1600_concurrent_consumers-16 2469280 4872 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/25_concurrent_producers/16_concurrent_consumers-16 3133611 3877 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/25_concurrent_producers/160_concurrent_consumers-16 2882362 4214 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/25_concurrent_producers/1600_concurrent_consumers-16 2554503 4684 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/10_concurrent_producers/16_concurrent_consumers-16 3180195 3682 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/10_concurrent_producers/160_concurrent_consumers-16 3052290 3901 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/10_concurrent_producers/1600_concurrent_consumers-16 2420862 4755 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/25_concurrent_producers/16_concurrent_consumers-16 3111976 3767 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/25_concurrent_producers/160_concurrent_consumers-16 3040722 3943 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/25_concurrent_producers/1600_concurrent_consumers-16 2566794 4633 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/10_concurrent_producers/16_concurrent_consumers-16 3222010 3926 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/10_concurrent_producers/160_concurrent_consumers-16 2796484 4410 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/10_concurrent_producers/1600_concurrent_consumers-16 2399295 4669 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/25_concurrent_producers/16_concurrent_consumers-16 3091362 3847 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/25_concurrent_producers/160_concurrent_consumers-16 2992759 3959 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/25_concurrent_producers/1600_concurrent_consumers-16 2485108 4807 ns/op +PASS +ok github.com/grafana/mimir/pkg/scheduler/queue 292.419s diff --git a/pkg/scheduler/queue/break.txt b/pkg/scheduler/queue/break.txt new file mode 100644 index 00000000000..c2b94d7b460 --- /dev/null +++ b/pkg/scheduler/queue/break.txt @@ -0,0 +1,24 @@ +goos: linux +goarch: amd64 +pkg: github.com/grafana/mimir/pkg/scheduler/queue +cpu: AMD Ryzen 9 PRO 6950H with Radeon Graphics +BenchmarkConcurrentQueueOperations/1_tenants/10_concurrent_producers/16_concurrent_consumers-16 3375884 3474 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/10_concurrent_producers/160_concurrent_consumers-16 3243482 3666 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/10_concurrent_producers/1600_concurrent_consumers-16 2816721 4222 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/25_concurrent_producers/16_concurrent_consumers-16 3460167 3495 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/25_concurrent_producers/160_concurrent_consumers-16 3213451 3730 ns/op +BenchmarkConcurrentQueueOperations/1_tenants/25_concurrent_producers/1600_concurrent_consumers-16 2842573 4287 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/10_concurrent_producers/16_concurrent_consumers-16 3229412 3664 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/10_concurrent_producers/160_concurrent_consumers-16 3111933 3913 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/10_concurrent_producers/1600_concurrent_consumers-16 2624695 4583 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/25_concurrent_producers/16_concurrent_consumers-16 3245578 3680 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/25_concurrent_producers/160_concurrent_consumers-16 3026472 3864 ns/op +BenchmarkConcurrentQueueOperations/10_tenants/25_concurrent_producers/1600_concurrent_consumers-16 2503609 4762 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/10_concurrent_producers/16_concurrent_consumers-16 3292596 3629 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/10_concurrent_producers/160_concurrent_consumers-16 3137596 3817 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/10_concurrent_producers/1600_concurrent_consumers-16 2726665 4568 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/25_concurrent_producers/16_concurrent_consumers-16 3080842 3869 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/25_concurrent_producers/160_concurrent_consumers-16 2937258 3981 ns/op +BenchmarkConcurrentQueueOperations/1000_tenants/25_concurrent_producers/1600_concurrent_consumers-16 2483106 4968 ns/op +PASS +ok github.com/grafana/mimir/pkg/scheduler/queue 289.483s diff --git a/pkg/scheduler/queue/tree/tenant_deletion_benchmark_test.go b/pkg/scheduler/queue/tree/tenant_deletion_benchmark_test.go new file mode 100644 index 00000000000..4b4080b21b4 --- /dev/null +++ b/pkg/scheduler/queue/tree/tenant_deletion_benchmark_test.go @@ -0,0 +1,234 @@ +package tree + +import ( + "fmt" + "math/rand" + "slices" + "strconv" + "testing" +) + +type fullTenantDeleteFunc func(tenantNodes map[string][]*Node, tenantIDOrder []string, tenant string) (map[string][]*Node, []string) + +func baseline(tenantNodes map[string][]*Node, tenantIDOrder []string, tenant string) (map[string][]*Node, []string) { + // delete from shared tenantNodes + for i := range tenantNodes[tenant] { + // only ever going to have a slice of length one here for simplicity + // and best representation of the actual case we are benchmarking; + // no need to check if this is the dequeuedFrom node + //if tenantNode == dequeuedFrom { + tenantNodes[tenant] = append(tenantNodes[tenant][:i], tenantNodes[tenant][i+1:]...) + //} + } + + for idx, name := range tenantIDOrder { + if name == tenant { + tenantIDOrder[idx] = string(emptyTenantID) + } + } + + // clear all sequential empty elements from tenantIDOrder + lastElementIndex := len(tenantIDOrder) - 1 + for i := lastElementIndex; i >= 0 && tenantIDOrder[i] == ""; i-- { + tenantIDOrder = tenantIDOrder[:i] + } + return tenantNodes, tenantIDOrder +} + +func breakEarly(tenantNodes map[string][]*Node, tenantIDOrder []string, tenant string) (map[string][]*Node, []string) { + // delete from shared tenantNodes + for i := range tenantNodes[tenant] { + // only ever going to have a slice of length one here for simplicity + // and best representation of the actual case we are benchmarking; + // no need to check if this is the dequeuedFrom node + //if tenantNode == dequeuedFrom { + tenantNodes[tenant] = append(tenantNodes[tenant][:i], tenantNodes[tenant][i+1:]...) + //} + } + + for idx, name := range tenantIDOrder { + if name == tenant { + tenantIDOrder[idx] = string(emptyTenantID) + break + } + } + + // clear all sequential empty elements from tenantIDOrder + lastElementIndex := len(tenantIDOrder) - 1 + for i := lastElementIndex; i >= 0 && tenantIDOrder[i] == ""; i-- { + tenantIDOrder = tenantIDOrder[:i] + } + return tenantNodes, tenantIDOrder +} + +func breakEarlyShrinkOnce(tenantNodes map[string][]*Node, tenantIDOrder []string, tenant string) (map[string][]*Node, []string) { + // delete from shared tenantNodes + for i := range tenantNodes[tenant] { + // only ever going to have a slice of length one here for simplicity + // and best representation of the actual case we are benchmarking; + // no need to check if this is the dequeuedFrom node + //if tenantNode == dequeuedFrom { + tenantNodes[tenant] = slices.Delete(tenantNodes[tenant], i, i+1) + //} + } + + for idx, name := range tenantIDOrder { + if name == tenant { + tenantIDOrder[idx] = string(emptyTenantID) + break + } + } + + emptyTenantIDsAtEnd := 0 + for i := len(tenantIDOrder) - 1; i >= 0 && tenantIDOrder[i] == ""; i-- { + emptyTenantIDsAtEnd++ + } + tenantIDOrder = slices.Delete( + tenantIDOrder, + len(tenantIDOrder)-emptyTenantIDsAtEnd, + len(tenantIDOrder), + ) + + return tenantNodes, tenantIDOrder +} + +func breakEarlyShrinkOnceNoSlices(tenantNodes map[string][]*Node, tenantIDOrder []string, tenant string) (map[string][]*Node, []string) { + // delete from shared tenantNodes + for i := range tenantNodes[tenant] { + // only ever going to have a slice of length one here for simplicity + // and best representation of the actual case we are benchmarking; + // no need to check if this is the dequeuedFrom node + //if tenantNode == dequeuedFrom { + tenantNodes[tenant] = append(tenantNodes[tenant][:i], tenantNodes[tenant][i+1:]...) + //} + } + + for idx, name := range tenantIDOrder { + if name == tenant { + tenantIDOrder[idx] = string(emptyTenantID) + break + } + } + + emptyTenantIDsAtEnd := 0 + for i := len(tenantIDOrder) - 1; i >= 0 && tenantIDOrder[i] == ""; i-- { + emptyTenantIDsAtEnd++ + } + tenantIDOrder = tenantIDOrder[:len(tenantIDOrder)-emptyTenantIDsAtEnd] + + return nil, tenantIDOrder +} + +func BenchmarkFullTenantDeletion(b *testing.B) { + tenantCount := 10000 + + var testCases = []struct { + name string + deleteFunc fullTenantDeleteFunc + tenantNodes map[string][]*Node + tenantRotationOrder []string + tenantDeletionOrder []string + }{ + {"baseline", baseline, nil, nil, nil}, + {"breakEarlyShrinkOnce", breakEarlyShrinkOnce, nil, nil, nil}, + {"breakEarlyShrinkOnceNoSlices", breakEarlyShrinkOnceNoSlices, nil, nil, nil}, + } + + makeStubs := func() (tenantNodes map[string][]*Node, tenantRotationOrder, tenantDeletionOrder []string) { + tenantNodes = make(map[string][]*Node, tenantCount) + tenantRotationOrder = make([]string, tenantCount) + + for i := range tenantCount { + tenantRotationOrder[i] = strconv.Itoa(i) + tenantNodes[strconv.Itoa(i)] = append(tenantNodes[strconv.Itoa(i)], &Node{}) + } + + tenantDeletionOrder = make([]string, tenantCount) + copy(tenantDeletionOrder, tenantRotationOrder) + rand.Shuffle(len(tenantDeletionOrder), func(i, j int) { + tenantDeletionOrder[i], tenantDeletionOrder[j] = tenantDeletionOrder[j], tenantDeletionOrder[i] + }) + + return tenantNodes, tenantRotationOrder, tenantDeletionOrder + } + + for _, testCase := range testCases { + b.Run(fmt.Sprintf("delete_tenant_func_%s", testCase.name), func(b *testing.B) { + for i := 0; i < b.N; i++ { + tenantNodes, tenantRotationOrder, tenantDeletionOrder := makeStubs() + testCase.tenantNodes = tenantNodes + testCase.tenantRotationOrder = tenantRotationOrder + testCase.tenantDeletionOrder = tenantDeletionOrder + + tenantDeleteIdx := 0 + for len(testCase.tenantRotationOrder) > 0 { + //fmt.Println("len(testCase.tenantRotationOrder): ", len(testCase.tenantRotationOrder)) + testCase.tenantNodes, testCase.tenantRotationOrder = testCase.deleteFunc( + testCase.tenantNodes, testCase.tenantRotationOrder, testCase.tenantDeletionOrder[tenantDeleteIdx], + ) + tenantDeleteIdx++ + } + } + }) + } +} + +type makeQueuePathFunc func(component, tenant string) QueuePath + +func baselineMakeQueuePath(component, tenant string) QueuePath { + return append([]string{component}, tenant) +} + +func noAppendMakeQueuePath(component, tenant string) QueuePath { + return QueuePath{component, tenant} +} + +func BenchmarkMakeQueuePath(b *testing.B) { + tenantCount := 10000 + + tenants := make([]string, tenantCount) + queueComponents := make([]string, tenantCount) + for i := range tenantCount { + tenants[i] = strconv.Itoa(i) + queueComponents[i] = randAdditionalQueueDimension() + } + + var testCases = []struct { + name string + pathFunc makeQueuePathFunc + }{ + {"baselineMakeQueuePath", baselineMakeQueuePath}, + {"noAppendMakeQueuePath", noAppendMakeQueuePath}, + } + + for _, testCase := range testCases { + b.Run(fmt.Sprintf("queue_path_func_%s", testCase.name), func(b *testing.B) { + for i := 0; i < b.N; i++ { + for tenantIdx := range tenantCount { + _ = testCase.pathFunc( + queueComponents[tenantIdx], tenants[tenantIdx], + ) + } + } + }) + } +} + +const ingesterQueueDimension = "ingester" +const storeGatewayQueueDimension = "store-gateway" +const ingesterAndStoreGatewayQueueDimension = "ingester-and-store-gateway" +const unknownQueueDimension = "unknown" + +var secondQueueDimensionOptions = []string{ + ingesterQueueDimension, + storeGatewayQueueDimension, + ingesterAndStoreGatewayQueueDimension, + unknownQueueDimension, +} + +func randAdditionalQueueDimension() string { + maxIdx := len(secondQueueDimensionOptions) - 1 + + idx := rand.Intn(maxIdx) + return secondQueueDimensionOptions[idx] +} diff --git a/pkg/scheduler/queue/vs.txt b/pkg/scheduler/queue/vs.txt new file mode 100644 index 00000000000..7d84d380408 --- /dev/null +++ b/pkg/scheduler/queue/vs.txt @@ -0,0 +1,27 @@ +goos: linux +goarch: amd64 +pkg: github.com/grafana/mimir/pkg/scheduler/queue +cpu: AMD Ryzen 9 PRO 6950H with Radeon Graphics + │ baseline.txt │ break.txt │ + │ sec/op │ sec/op vs base │ +ConcurrentQueueOperations/1_tenants/10_concurrent_producers/16_concurrent_consumers-16 3.582µ ± ∞ ¹ 3.474µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1_tenants/10_concurrent_producers/160_concurrent_consumers-16 3.817µ ± ∞ ¹ 3.666µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1_tenants/10_concurrent_producers/1600_concurrent_consumers-16 4.872µ ± ∞ ¹ 4.222µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1_tenants/25_concurrent_producers/16_concurrent_consumers-16 3.877µ ± ∞ ¹ 3.495µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1_tenants/25_concurrent_producers/160_concurrent_consumers-16 4.214µ ± ∞ ¹ 3.730µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1_tenants/25_concurrent_producers/1600_concurrent_consumers-16 4.684µ ± ∞ ¹ 4.287µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/10_tenants/10_concurrent_producers/16_concurrent_consumers-16 3.682µ ± ∞ ¹ 3.664µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/10_tenants/10_concurrent_producers/160_concurrent_consumers-16 3.901µ ± ∞ ¹ 3.913µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/10_tenants/10_concurrent_producers/1600_concurrent_consumers-16 4.755µ ± ∞ ¹ 4.583µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/10_tenants/25_concurrent_producers/16_concurrent_consumers-16 3.767µ ± ∞ ¹ 3.680µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/10_tenants/25_concurrent_producers/160_concurrent_consumers-16 3.943µ ± ∞ ¹ 3.864µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/10_tenants/25_concurrent_producers/1600_concurrent_consumers-16 4.633µ ± ∞ ¹ 4.762µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1000_tenants/10_concurrent_producers/16_concurrent_consumers-16 3.926µ ± ∞ ¹ 3.629µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1000_tenants/10_concurrent_producers/160_concurrent_consumers-16 4.410µ ± ∞ ¹ 3.817µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1000_tenants/10_concurrent_producers/1600_concurrent_consumers-16 4.669µ ± ∞ ¹ 4.568µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1000_tenants/25_concurrent_producers/16_concurrent_consumers-16 3.847µ ± ∞ ¹ 3.869µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1000_tenants/25_concurrent_producers/160_concurrent_consumers-16 3.959µ ± ∞ ¹ 3.981µ ± ∞ ¹ ~ (p=1.000 n=1) ² +ConcurrentQueueOperations/1000_tenants/25_concurrent_producers/1600_concurrent_consumers-16 4.807µ ± ∞ ¹ 4.968µ ± ∞ ¹ ~ (p=1.000 n=1) ² +geomean 4.164µ 3.987µ -4.26% +¹ need >= 6 samples for confidence interval at level 0.95 +² need >= 4 samples to detect a difference at alpha level 0.05