// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/bigquery/v2/model.proto

package bigquery

import (
	context "context"
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
	empty "github.com/golang/protobuf/ptypes/empty"
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	wrappers "github.com/golang/protobuf/ptypes/wrappers"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	grpc "google.golang.org/grpc"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// Indicates the type of the Model.
type Model_ModelType int32

const (
	Model_MODEL_TYPE_UNSPECIFIED Model_ModelType = 0
	// Linear regression model.
	Model_LINEAR_REGRESSION Model_ModelType = 1
	// Logistic regression based classification model.
	Model_LOGISTIC_REGRESSION Model_ModelType = 2
	// K-means clustering model.
	Model_KMEANS Model_ModelType = 3
	// [Beta] An imported TensorFlow model.
	Model_TENSORFLOW Model_ModelType = 6
)

var Model_ModelType_name = map[int32]string{
	0: "MODEL_TYPE_UNSPECIFIED",
	1: "LINEAR_REGRESSION",
	2: "LOGISTIC_REGRESSION",
	3: "KMEANS",
	6: "TENSORFLOW",
}

var Model_ModelType_value = map[string]int32{
	"MODEL_TYPE_UNSPECIFIED": 0,
	"LINEAR_REGRESSION":      1,
	"LOGISTIC_REGRESSION":    2,
	"KMEANS":                 3,
	"TENSORFLOW":             6,
}

func (x Model_ModelType) String() string {
	return proto.EnumName(Model_ModelType_name, int32(x))
}

func (Model_ModelType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 0}
}

// Loss metric to evaluate model training performance.
type Model_LossType int32

const (
	Model_LOSS_TYPE_UNSPECIFIED Model_LossType = 0
	// Mean squared loss, used for linear regression.
	Model_MEAN_SQUARED_LOSS Model_LossType = 1
	// Mean log loss, used for logistic regression.
	Model_MEAN_LOG_LOSS Model_LossType = 2
)

var Model_LossType_name = map[int32]string{
	0: "LOSS_TYPE_UNSPECIFIED",
	1: "MEAN_SQUARED_LOSS",
	2: "MEAN_LOG_LOSS",
}

var Model_LossType_value = map[string]int32{
	"LOSS_TYPE_UNSPECIFIED": 0,
	"MEAN_SQUARED_LOSS":     1,
	"MEAN_LOG_LOSS":         2,
}

func (x Model_LossType) String() string {
	return proto.EnumName(Model_LossType_name, int32(x))
}

func (Model_LossType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 1}
}

// Distance metric used to compute the distance between two points.
type Model_DistanceType int32

const (
	Model_DISTANCE_TYPE_UNSPECIFIED Model_DistanceType = 0
	// Eculidean distance.
	Model_EUCLIDEAN Model_DistanceType = 1
	// Cosine distance.
	Model_COSINE Model_DistanceType = 2
)

var Model_DistanceType_name = map[int32]string{
	0: "DISTANCE_TYPE_UNSPECIFIED",
	1: "EUCLIDEAN",
	2: "COSINE",
}

var Model_DistanceType_value = map[string]int32{
	"DISTANCE_TYPE_UNSPECIFIED": 0,
	"EUCLIDEAN":                 1,
	"COSINE":                    2,
}

func (x Model_DistanceType) String() string {
	return proto.EnumName(Model_DistanceType_name, int32(x))
}

func (Model_DistanceType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 2}
}

// Indicates the method to split input data into multiple tables.
type Model_DataSplitMethod int32

const (
	Model_DATA_SPLIT_METHOD_UNSPECIFIED Model_DataSplitMethod = 0
	// Splits data randomly.
	Model_RANDOM Model_DataSplitMethod = 1
	// Splits data with the user provided tags.
	Model_CUSTOM Model_DataSplitMethod = 2
	// Splits data sequentially.
	Model_SEQUENTIAL Model_DataSplitMethod = 3
	// Data split will be skipped.
	Model_NO_SPLIT Model_DataSplitMethod = 4
	// Splits data automatically: Uses NO_SPLIT if the data size is small.
	// Otherwise uses RANDOM.
	Model_AUTO_SPLIT Model_DataSplitMethod = 5
)

var Model_DataSplitMethod_name = map[int32]string{
	0: "DATA_SPLIT_METHOD_UNSPECIFIED",
	1: "RANDOM",
	2: "CUSTOM",
	3: "SEQUENTIAL",
	4: "NO_SPLIT",
	5: "AUTO_SPLIT",
}

var Model_DataSplitMethod_value = map[string]int32{
	"DATA_SPLIT_METHOD_UNSPECIFIED": 0,
	"RANDOM":                        1,
	"CUSTOM":                        2,
	"SEQUENTIAL":                    3,
	"NO_SPLIT":                      4,
	"AUTO_SPLIT":                    5,
}

func (x Model_DataSplitMethod) String() string {
	return proto.EnumName(Model_DataSplitMethod_name, int32(x))
}

func (Model_DataSplitMethod) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 3}
}

// Indicates the learning rate optimization strategy to use.
type Model_LearnRateStrategy int32

const (
	Model_LEARN_RATE_STRATEGY_UNSPECIFIED Model_LearnRateStrategy = 0
	// Use line search to determine learning rate.
	Model_LINE_SEARCH Model_LearnRateStrategy = 1
	// Use a constant learning rate.
	Model_CONSTANT Model_LearnRateStrategy = 2
)

var Model_LearnRateStrategy_name = map[int32]string{
	0: "LEARN_RATE_STRATEGY_UNSPECIFIED",
	1: "LINE_SEARCH",
	2: "CONSTANT",
}

var Model_LearnRateStrategy_value = map[string]int32{
	"LEARN_RATE_STRATEGY_UNSPECIFIED": 0,
	"LINE_SEARCH":                     1,
	"CONSTANT":                        2,
}

func (x Model_LearnRateStrategy) String() string {
	return proto.EnumName(Model_LearnRateStrategy_name, int32(x))
}

func (Model_LearnRateStrategy) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 4}
}

// Indicates the optimization strategy used for training.
type Model_OptimizationStrategy int32

const (
	Model_OPTIMIZATION_STRATEGY_UNSPECIFIED Model_OptimizationStrategy = 0
	// Uses an iterative batch gradient descent algorithm.
	Model_BATCH_GRADIENT_DESCENT Model_OptimizationStrategy = 1
	// Uses a normal equation to solve linear regression problem.
	Model_NORMAL_EQUATION Model_OptimizationStrategy = 2
)

var Model_OptimizationStrategy_name = map[int32]string{
	0: "OPTIMIZATION_STRATEGY_UNSPECIFIED",
	1: "BATCH_GRADIENT_DESCENT",
	2: "NORMAL_EQUATION",
}

var Model_OptimizationStrategy_value = map[string]int32{
	"OPTIMIZATION_STRATEGY_UNSPECIFIED": 0,
	"BATCH_GRADIENT_DESCENT":            1,
	"NORMAL_EQUATION":                   2,
}

func (x Model_OptimizationStrategy) String() string {
	return proto.EnumName(Model_OptimizationStrategy_name, int32(x))
}

func (Model_OptimizationStrategy) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 5}
}

// Indicates the method used to initialize the centroids for KMeans
// clustering algorithm.
type Model_KmeansEnums_KmeansInitializationMethod int32

const (
	Model_KmeansEnums_KMEANS_INITIALIZATION_METHOD_UNSPECIFIED Model_KmeansEnums_KmeansInitializationMethod = 0
	// Initializes the centroids randomly.
	Model_KmeansEnums_RANDOM Model_KmeansEnums_KmeansInitializationMethod = 1
	// Initializes the centroids using data specified in
	// kmeans_initialization_column.
	Model_KmeansEnums_CUSTOM Model_KmeansEnums_KmeansInitializationMethod = 2
)

var Model_KmeansEnums_KmeansInitializationMethod_name = map[int32]string{
	0: "KMEANS_INITIALIZATION_METHOD_UNSPECIFIED",
	1: "RANDOM",
	2: "CUSTOM",
}

var Model_KmeansEnums_KmeansInitializationMethod_value = map[string]int32{
	"KMEANS_INITIALIZATION_METHOD_UNSPECIFIED": 0,
	"RANDOM": 1,
	"CUSTOM": 2,
}

func (x Model_KmeansEnums_KmeansInitializationMethod) String() string {
	return proto.EnumName(Model_KmeansEnums_KmeansInitializationMethod_name, int32(x))
}

func (Model_KmeansEnums_KmeansInitializationMethod) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 0, 0}
}

type Model struct {
	// Output only. A hash of this resource.
	Etag string `protobuf:"bytes,1,opt,name=etag,proto3" json:"etag,omitempty"`
	// Required. Unique identifier for this model.
	ModelReference *ModelReference `protobuf:"bytes,2,opt,name=model_reference,json=modelReference,proto3" json:"model_reference,omitempty"`
	// Output only. The time when this model was created, in millisecs since the
	// epoch.
	CreationTime int64 `protobuf:"varint,5,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"`
	// Output only. The time when this model was last modified, in millisecs
	// since the epoch.
	LastModifiedTime int64 `protobuf:"varint,6,opt,name=last_modified_time,json=lastModifiedTime,proto3" json:"last_modified_time,omitempty"`
	// [Optional] A user-friendly description of this model.
	Description string `protobuf:"bytes,12,opt,name=description,proto3" json:"description,omitempty"`
	// [Optional] A descriptive name for this model.
	FriendlyName string `protobuf:"bytes,14,opt,name=friendly_name,json=friendlyName,proto3" json:"friendly_name,omitempty"`
	// [Optional] The labels associated with this model. You can use these to
	// organize and group your models. Label keys and values can be no longer
	// than 63 characters, can only contain lowercase letters, numeric
	// characters, underscores and dashes. International characters are allowed.
	// Label values are optional. Label keys must start with a letter and each
	// label in the list must have a different key.
	Labels map[string]string `protobuf:"bytes,15,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// [Optional] The time when this model expires, in milliseconds since the
	// epoch. If not present, the model will persist indefinitely. Expired models
	// will be deleted and their storage reclaimed.  The defaultTableExpirationMs
	// property of the encapsulating dataset can be used to set a default
	// expirationTime on newly created models.
	ExpirationTime int64 `protobuf:"varint,16,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"`
	// Output only. The geographic location where the model resides. This value
	// is inherited from the dataset.
	Location string `protobuf:"bytes,13,opt,name=location,proto3" json:"location,omitempty"`
	// Output only. Type of the model resource.
	ModelType Model_ModelType `protobuf:"varint,7,opt,name=model_type,json=modelType,proto3,enum=google.cloud.bigquery.v2.Model_ModelType" json:"model_type,omitempty"`
	// Output only. Information for all training runs in increasing order of
	// start_time.
	TrainingRuns []*Model_TrainingRun `protobuf:"bytes,9,rep,name=training_runs,json=trainingRuns,proto3" json:"training_runs,omitempty"`
	// Output only. Input feature columns that were used to train this model.
	FeatureColumns []*StandardSqlField `protobuf:"bytes,10,rep,name=feature_columns,json=featureColumns,proto3" json:"feature_columns,omitempty"`
	// Output only. Label columns that were used to train this model.
	// The output of the model will have a "predicted_" prefix to these columns.
	LabelColumns         []*StandardSqlField `protobuf:"bytes,11,rep,name=label_columns,json=labelColumns,proto3" json:"label_columns,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (m *Model) Reset()         { *m = Model{} }
func (m *Model) String() string { return proto.CompactTextString(m) }
func (*Model) ProtoMessage()    {}
func (*Model) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0}
}

func (m *Model) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model.Unmarshal(m, b)
}
func (m *Model) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model.Marshal(b, m, deterministic)
}
func (m *Model) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model.Merge(m, src)
}
func (m *Model) XXX_Size() int {
	return xxx_messageInfo_Model.Size(m)
}
func (m *Model) XXX_DiscardUnknown() {
	xxx_messageInfo_Model.DiscardUnknown(m)
}

var xxx_messageInfo_Model proto.InternalMessageInfo

func (m *Model) GetEtag() string {
	if m != nil {
		return m.Etag
	}
	return ""
}

func (m *Model) GetModelReference() *ModelReference {
	if m != nil {
		return m.ModelReference
	}
	return nil
}

func (m *Model) GetCreationTime() int64 {
	if m != nil {
		return m.CreationTime
	}
	return 0
}

func (m *Model) GetLastModifiedTime() int64 {
	if m != nil {
		return m.LastModifiedTime
	}
	return 0
}

func (m *Model) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *Model) GetFriendlyName() string {
	if m != nil {
		return m.FriendlyName
	}
	return ""
}

func (m *Model) GetLabels() map[string]string {
	if m != nil {
		return m.Labels
	}
	return nil
}

func (m *Model) GetExpirationTime() int64 {
	if m != nil {
		return m.ExpirationTime
	}
	return 0
}

func (m *Model) GetLocation() string {
	if m != nil {
		return m.Location
	}
	return ""
}

func (m *Model) GetModelType() Model_ModelType {
	if m != nil {
		return m.ModelType
	}
	return Model_MODEL_TYPE_UNSPECIFIED
}

func (m *Model) GetTrainingRuns() []*Model_TrainingRun {
	if m != nil {
		return m.TrainingRuns
	}
	return nil
}

func (m *Model) GetFeatureColumns() []*StandardSqlField {
	if m != nil {
		return m.FeatureColumns
	}
	return nil
}

func (m *Model) GetLabelColumns() []*StandardSqlField {
	if m != nil {
		return m.LabelColumns
	}
	return nil
}

type Model_KmeansEnums struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Model_KmeansEnums) Reset()         { *m = Model_KmeansEnums{} }
func (m *Model_KmeansEnums) String() string { return proto.CompactTextString(m) }
func (*Model_KmeansEnums) ProtoMessage()    {}
func (*Model_KmeansEnums) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 0}
}

func (m *Model_KmeansEnums) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_KmeansEnums.Unmarshal(m, b)
}
func (m *Model_KmeansEnums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_KmeansEnums.Marshal(b, m, deterministic)
}
func (m *Model_KmeansEnums) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_KmeansEnums.Merge(m, src)
}
func (m *Model_KmeansEnums) XXX_Size() int {
	return xxx_messageInfo_Model_KmeansEnums.Size(m)
}
func (m *Model_KmeansEnums) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_KmeansEnums.DiscardUnknown(m)
}

var xxx_messageInfo_Model_KmeansEnums proto.InternalMessageInfo

// Evaluation metrics for regression and explicit feedback type matrix
// factorization models.
type Model_RegressionMetrics struct {
	// Mean absolute error.
	MeanAbsoluteError *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=mean_absolute_error,json=meanAbsoluteError,proto3" json:"mean_absolute_error,omitempty"`
	// Mean squared error.
	MeanSquaredError *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=mean_squared_error,json=meanSquaredError,proto3" json:"mean_squared_error,omitempty"`
	// Mean squared log error.
	MeanSquaredLogError *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=mean_squared_log_error,json=meanSquaredLogError,proto3" json:"mean_squared_log_error,omitempty"`
	// Median absolute error.
	MedianAbsoluteError *wrappers.DoubleValue `protobuf:"bytes,4,opt,name=median_absolute_error,json=medianAbsoluteError,proto3" json:"median_absolute_error,omitempty"`
	// R^2 score.
	RSquared             *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=r_squared,json=rSquared,proto3" json:"r_squared,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *Model_RegressionMetrics) Reset()         { *m = Model_RegressionMetrics{} }
func (m *Model_RegressionMetrics) String() string { return proto.CompactTextString(m) }
func (*Model_RegressionMetrics) ProtoMessage()    {}
func (*Model_RegressionMetrics) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 1}
}

func (m *Model_RegressionMetrics) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_RegressionMetrics.Unmarshal(m, b)
}
func (m *Model_RegressionMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_RegressionMetrics.Marshal(b, m, deterministic)
}
func (m *Model_RegressionMetrics) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_RegressionMetrics.Merge(m, src)
}
func (m *Model_RegressionMetrics) XXX_Size() int {
	return xxx_messageInfo_Model_RegressionMetrics.Size(m)
}
func (m *Model_RegressionMetrics) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_RegressionMetrics.DiscardUnknown(m)
}

var xxx_messageInfo_Model_RegressionMetrics proto.InternalMessageInfo

func (m *Model_RegressionMetrics) GetMeanAbsoluteError() *wrappers.DoubleValue {
	if m != nil {
		return m.MeanAbsoluteError
	}
	return nil
}

func (m *Model_RegressionMetrics) GetMeanSquaredError() *wrappers.DoubleValue {
	if m != nil {
		return m.MeanSquaredError
	}
	return nil
}

func (m *Model_RegressionMetrics) GetMeanSquaredLogError() *wrappers.DoubleValue {
	if m != nil {
		return m.MeanSquaredLogError
	}
	return nil
}

func (m *Model_RegressionMetrics) GetMedianAbsoluteError() *wrappers.DoubleValue {
	if m != nil {
		return m.MedianAbsoluteError
	}
	return nil
}

func (m *Model_RegressionMetrics) GetRSquared() *wrappers.DoubleValue {
	if m != nil {
		return m.RSquared
	}
	return nil
}

// Aggregate metrics for classification/classifier models. For multi-class
// models, the metrics are either macro-averaged or micro-averaged. When
// macro-averaged, the metrics are calculated for each label and then an
// unweighted average is taken of those values. When micro-averaged, the
// metric is calculated globally by counting the total number of correctly
// predicted rows.
type Model_AggregateClassificationMetrics struct {
	// Precision is the fraction of actual positive predictions that had
	// positive actual labels. For multiclass this is a macro-averaged
	// metric treating each class as a binary classifier.
	Precision *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"`
	// Recall is the fraction of actual positive labels that were given a
	// positive prediction. For multiclass this is a macro-averaged metric.
	Recall *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=recall,proto3" json:"recall,omitempty"`
	// Accuracy is the fraction of predictions given the correct label. For
	// multiclass this is a micro-averaged metric.
	Accuracy *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=accuracy,proto3" json:"accuracy,omitempty"`
	// Threshold at which the metrics are computed. For binary
	// classification models this is the positive class threshold.
	// For multi-class classfication models this is the confidence
	// threshold.
	Threshold *wrappers.DoubleValue `protobuf:"bytes,4,opt,name=threshold,proto3" json:"threshold,omitempty"`
	// The F1 score is an average of recall and precision. For multiclass
	// this is a macro-averaged metric.
	F1Score *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=f1_score,json=f1Score,proto3" json:"f1_score,omitempty"`
	// Logarithmic Loss. For multiclass this is a macro-averaged metric.
	LogLoss *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=log_loss,json=logLoss,proto3" json:"log_loss,omitempty"`
	// Area Under a ROC Curve. For multiclass this is a macro-averaged
	// metric.
	RocAuc               *wrappers.DoubleValue `protobuf:"bytes,7,opt,name=roc_auc,json=rocAuc,proto3" json:"roc_auc,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *Model_AggregateClassificationMetrics) Reset()         { *m = Model_AggregateClassificationMetrics{} }
func (m *Model_AggregateClassificationMetrics) String() string { return proto.CompactTextString(m) }
func (*Model_AggregateClassificationMetrics) ProtoMessage()    {}
func (*Model_AggregateClassificationMetrics) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 2}
}

func (m *Model_AggregateClassificationMetrics) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_AggregateClassificationMetrics.Unmarshal(m, b)
}
func (m *Model_AggregateClassificationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_AggregateClassificationMetrics.Marshal(b, m, deterministic)
}
func (m *Model_AggregateClassificationMetrics) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_AggregateClassificationMetrics.Merge(m, src)
}
func (m *Model_AggregateClassificationMetrics) XXX_Size() int {
	return xxx_messageInfo_Model_AggregateClassificationMetrics.Size(m)
}
func (m *Model_AggregateClassificationMetrics) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_AggregateClassificationMetrics.DiscardUnknown(m)
}

var xxx_messageInfo_Model_AggregateClassificationMetrics proto.InternalMessageInfo

func (m *Model_AggregateClassificationMetrics) GetPrecision() *wrappers.DoubleValue {
	if m != nil {
		return m.Precision
	}
	return nil
}

func (m *Model_AggregateClassificationMetrics) GetRecall() *wrappers.DoubleValue {
	if m != nil {
		return m.Recall
	}
	return nil
}

func (m *Model_AggregateClassificationMetrics) GetAccuracy() *wrappers.DoubleValue {
	if m != nil {
		return m.Accuracy
	}
	return nil
}

func (m *Model_AggregateClassificationMetrics) GetThreshold() *wrappers.DoubleValue {
	if m != nil {
		return m.Threshold
	}
	return nil
}

func (m *Model_AggregateClassificationMetrics) GetF1Score() *wrappers.DoubleValue {
	if m != nil {
		return m.F1Score
	}
	return nil
}

func (m *Model_AggregateClassificationMetrics) GetLogLoss() *wrappers.DoubleValue {
	if m != nil {
		return m.LogLoss
	}
	return nil
}

func (m *Model_AggregateClassificationMetrics) GetRocAuc() *wrappers.DoubleValue {
	if m != nil {
		return m.RocAuc
	}
	return nil
}

// Evaluation metrics for binary classification/classifier models.
type Model_BinaryClassificationMetrics struct {
	// Aggregate classification metrics.
	AggregateClassificationMetrics *Model_AggregateClassificationMetrics `protobuf:"bytes,1,opt,name=aggregate_classification_metrics,json=aggregateClassificationMetrics,proto3" json:"aggregate_classification_metrics,omitempty"`
	// Binary confusion matrix at multiple thresholds.
	BinaryConfusionMatrixList []*Model_BinaryClassificationMetrics_BinaryConfusionMatrix `protobuf:"bytes,2,rep,name=binary_confusion_matrix_list,json=binaryConfusionMatrixList,proto3" json:"binary_confusion_matrix_list,omitempty"`
	// Label representing the positive class.
	PositiveLabel string `protobuf:"bytes,3,opt,name=positive_label,json=positiveLabel,proto3" json:"positive_label,omitempty"`
	// Label representing the negative class.
	NegativeLabel        string   `protobuf:"bytes,4,opt,name=negative_label,json=negativeLabel,proto3" json:"negative_label,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Model_BinaryClassificationMetrics) Reset()         { *m = Model_BinaryClassificationMetrics{} }
func (m *Model_BinaryClassificationMetrics) String() string { return proto.CompactTextString(m) }
func (*Model_BinaryClassificationMetrics) ProtoMessage()    {}
func (*Model_BinaryClassificationMetrics) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 3}
}

func (m *Model_BinaryClassificationMetrics) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_BinaryClassificationMetrics.Unmarshal(m, b)
}
func (m *Model_BinaryClassificationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_BinaryClassificationMetrics.Marshal(b, m, deterministic)
}
func (m *Model_BinaryClassificationMetrics) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_BinaryClassificationMetrics.Merge(m, src)
}
func (m *Model_BinaryClassificationMetrics) XXX_Size() int {
	return xxx_messageInfo_Model_BinaryClassificationMetrics.Size(m)
}
func (m *Model_BinaryClassificationMetrics) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_BinaryClassificationMetrics.DiscardUnknown(m)
}

var xxx_messageInfo_Model_BinaryClassificationMetrics proto.InternalMessageInfo

func (m *Model_BinaryClassificationMetrics) GetAggregateClassificationMetrics() *Model_AggregateClassificationMetrics {
	if m != nil {
		return m.AggregateClassificationMetrics
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics) GetBinaryConfusionMatrixList() []*Model_BinaryClassificationMetrics_BinaryConfusionMatrix {
	if m != nil {
		return m.BinaryConfusionMatrixList
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics) GetPositiveLabel() string {
	if m != nil {
		return m.PositiveLabel
	}
	return ""
}

func (m *Model_BinaryClassificationMetrics) GetNegativeLabel() string {
	if m != nil {
		return m.NegativeLabel
	}
	return ""
}

// Confusion matrix for binary classification models.
type Model_BinaryClassificationMetrics_BinaryConfusionMatrix struct {
	// Threshold value used when computing each of the following metric.
	PositiveClassThreshold *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=positive_class_threshold,json=positiveClassThreshold,proto3" json:"positive_class_threshold,omitempty"`
	// Number of true samples predicted as true.
	TruePositives *wrappers.Int64Value `protobuf:"bytes,2,opt,name=true_positives,json=truePositives,proto3" json:"true_positives,omitempty"`
	// Number of false samples predicted as true.
	FalsePositives *wrappers.Int64Value `protobuf:"bytes,3,opt,name=false_positives,json=falsePositives,proto3" json:"false_positives,omitempty"`
	// Number of true samples predicted as false.
	TrueNegatives *wrappers.Int64Value `protobuf:"bytes,4,opt,name=true_negatives,json=trueNegatives,proto3" json:"true_negatives,omitempty"`
	// Number of false samples predicted as false.
	FalseNegatives *wrappers.Int64Value `protobuf:"bytes,5,opt,name=false_negatives,json=falseNegatives,proto3" json:"false_negatives,omitempty"`
	// The fraction of actual positive predictions that had positive actual
	// labels.
	Precision *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=precision,proto3" json:"precision,omitempty"`
	// The fraction of actual positive labels that were given a positive
	// prediction.
	Recall *wrappers.DoubleValue `protobuf:"bytes,7,opt,name=recall,proto3" json:"recall,omitempty"`
	// The equally weighted average of recall and precision.
	F1Score *wrappers.DoubleValue `protobuf:"bytes,8,opt,name=f1_score,json=f1Score,proto3" json:"f1_score,omitempty"`
	// The fraction of predictions given the correct label.
	Accuracy             *wrappers.DoubleValue `protobuf:"bytes,9,opt,name=accuracy,proto3" json:"accuracy,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) Reset() {
	*m = Model_BinaryClassificationMetrics_BinaryConfusionMatrix{}
}
func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) String() string {
	return proto.CompactTextString(m)
}
func (*Model_BinaryClassificationMetrics_BinaryConfusionMatrix) ProtoMessage() {}
func (*Model_BinaryClassificationMetrics_BinaryConfusionMatrix) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 3, 0}
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.Unmarshal(m, b)
}
func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.Marshal(b, m, deterministic)
}
func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.Merge(m, src)
}
func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_Size() int {
	return xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.Size(m)
}
func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix.DiscardUnknown(m)
}

var xxx_messageInfo_Model_BinaryClassificationMetrics_BinaryConfusionMatrix proto.InternalMessageInfo

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetPositiveClassThreshold() *wrappers.DoubleValue {
	if m != nil {
		return m.PositiveClassThreshold
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetTruePositives() *wrappers.Int64Value {
	if m != nil {
		return m.TruePositives
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetFalsePositives() *wrappers.Int64Value {
	if m != nil {
		return m.FalsePositives
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetTrueNegatives() *wrappers.Int64Value {
	if m != nil {
		return m.TrueNegatives
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetFalseNegatives() *wrappers.Int64Value {
	if m != nil {
		return m.FalseNegatives
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetPrecision() *wrappers.DoubleValue {
	if m != nil {
		return m.Precision
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetRecall() *wrappers.DoubleValue {
	if m != nil {
		return m.Recall
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetF1Score() *wrappers.DoubleValue {
	if m != nil {
		return m.F1Score
	}
	return nil
}

func (m *Model_BinaryClassificationMetrics_BinaryConfusionMatrix) GetAccuracy() *wrappers.DoubleValue {
	if m != nil {
		return m.Accuracy
	}
	return nil
}

// Evaluation metrics for multi-class classification/classifier models.
type Model_MultiClassClassificationMetrics struct {
	// Aggregate classification metrics.
	AggregateClassificationMetrics *Model_AggregateClassificationMetrics `protobuf:"bytes,1,opt,name=aggregate_classification_metrics,json=aggregateClassificationMetrics,proto3" json:"aggregate_classification_metrics,omitempty"`
	// Confusion matrix at different thresholds.
	ConfusionMatrixList  []*Model_MultiClassClassificationMetrics_ConfusionMatrix `protobuf:"bytes,2,rep,name=confusion_matrix_list,json=confusionMatrixList,proto3" json:"confusion_matrix_list,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                                 `json:"-"`
	XXX_unrecognized     []byte                                                   `json:"-"`
	XXX_sizecache        int32                                                    `json:"-"`
}

func (m *Model_MultiClassClassificationMetrics) Reset()         { *m = Model_MultiClassClassificationMetrics{} }
func (m *Model_MultiClassClassificationMetrics) String() string { return proto.CompactTextString(m) }
func (*Model_MultiClassClassificationMetrics) ProtoMessage()    {}
func (*Model_MultiClassClassificationMetrics) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 4}
}

func (m *Model_MultiClassClassificationMetrics) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics.Unmarshal(m, b)
}
func (m *Model_MultiClassClassificationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics.Marshal(b, m, deterministic)
}
func (m *Model_MultiClassClassificationMetrics) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_MultiClassClassificationMetrics.Merge(m, src)
}
func (m *Model_MultiClassClassificationMetrics) XXX_Size() int {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics.Size(m)
}
func (m *Model_MultiClassClassificationMetrics) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_MultiClassClassificationMetrics.DiscardUnknown(m)
}

var xxx_messageInfo_Model_MultiClassClassificationMetrics proto.InternalMessageInfo

func (m *Model_MultiClassClassificationMetrics) GetAggregateClassificationMetrics() *Model_AggregateClassificationMetrics {
	if m != nil {
		return m.AggregateClassificationMetrics
	}
	return nil
}

func (m *Model_MultiClassClassificationMetrics) GetConfusionMatrixList() []*Model_MultiClassClassificationMetrics_ConfusionMatrix {
	if m != nil {
		return m.ConfusionMatrixList
	}
	return nil
}

// Confusion matrix for multi-class classification models.
type Model_MultiClassClassificationMetrics_ConfusionMatrix struct {
	// Confidence threshold used when computing the entries of the
	// confusion matrix.
	ConfidenceThreshold *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=confidence_threshold,json=confidenceThreshold,proto3" json:"confidence_threshold,omitempty"`
	// One row per actual label.
	Rows                 []*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row `protobuf:"bytes,2,rep,name=rows,proto3" json:"rows,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                                     `json:"-"`
	XXX_unrecognized     []byte                                                       `json:"-"`
	XXX_sizecache        int32                                                        `json:"-"`
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) Reset() {
	*m = Model_MultiClassClassificationMetrics_ConfusionMatrix{}
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) String() string {
	return proto.CompactTextString(m)
}
func (*Model_MultiClassClassificationMetrics_ConfusionMatrix) ProtoMessage() {}
func (*Model_MultiClassClassificationMetrics_ConfusionMatrix) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 4, 0}
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.Unmarshal(m, b)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.Marshal(b, m, deterministic)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.Merge(m, src)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_Size() int {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.Size(m)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix.DiscardUnknown(m)
}

var xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix proto.InternalMessageInfo

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) GetConfidenceThreshold() *wrappers.DoubleValue {
	if m != nil {
		return m.ConfidenceThreshold
	}
	return nil
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix) GetRows() []*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row {
	if m != nil {
		return m.Rows
	}
	return nil
}

// A single entry in the confusion matrix.
type Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry struct {
	// The predicted label. For confidence_threshold > 0, we will
	// also add an entry indicating the number of items under the
	// confidence threshold.
	PredictedLabel string `protobuf:"bytes,1,opt,name=predicted_label,json=predictedLabel,proto3" json:"predicted_label,omitempty"`
	// Number of items being predicted as this label.
	ItemCount            *wrappers.Int64Value `protobuf:"bytes,2,opt,name=item_count,json=itemCount,proto3" json:"item_count,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) Reset() {
	*m = Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry{}
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) String() string {
	return proto.CompactTextString(m)
}
func (*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) ProtoMessage() {}
func (*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 4, 0, 0}
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.Unmarshal(m, b)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.Marshal(b, m, deterministic)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.Merge(m, src)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_Size() int {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.Size(m)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry.DiscardUnknown(m)
}

var xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry proto.InternalMessageInfo

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) GetPredictedLabel() string {
	if m != nil {
		return m.PredictedLabel
	}
	return ""
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry) GetItemCount() *wrappers.Int64Value {
	if m != nil {
		return m.ItemCount
	}
	return nil
}

// A single row in the confusion matrix.
type Model_MultiClassClassificationMetrics_ConfusionMatrix_Row struct {
	// The original label of this row.
	ActualLabel string `protobuf:"bytes,1,opt,name=actual_label,json=actualLabel,proto3" json:"actual_label,omitempty"`
	// Info describing predicted label distribution.
	Entries              []*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                                       `json:"-"`
	XXX_unrecognized     []byte                                                         `json:"-"`
	XXX_sizecache        int32                                                          `json:"-"`
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) Reset() {
	*m = Model_MultiClassClassificationMetrics_ConfusionMatrix_Row{}
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) String() string {
	return proto.CompactTextString(m)
}
func (*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) ProtoMessage() {}
func (*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 4, 0, 1}
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.Unmarshal(m, b)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.Marshal(b, m, deterministic)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.Merge(m, src)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_Size() int {
	return xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.Size(m)
}
func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row.DiscardUnknown(m)
}

var xxx_messageInfo_Model_MultiClassClassificationMetrics_ConfusionMatrix_Row proto.InternalMessageInfo

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) GetActualLabel() string {
	if m != nil {
		return m.ActualLabel
	}
	return ""
}

func (m *Model_MultiClassClassificationMetrics_ConfusionMatrix_Row) GetEntries() []*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry {
	if m != nil {
		return m.Entries
	}
	return nil
}

// Evaluation metrics for clustering models.
type Model_ClusteringMetrics struct {
	// Davies-Bouldin index.
	DaviesBouldinIndex *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=davies_bouldin_index,json=daviesBouldinIndex,proto3" json:"davies_bouldin_index,omitempty"`
	// Mean of squared distances between each sample to its cluster centroid.
	MeanSquaredDistance *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=mean_squared_distance,json=meanSquaredDistance,proto3" json:"mean_squared_distance,omitempty"`
	// [Beta] Information for all clusters.
	Clusters             []*Model_ClusteringMetrics_Cluster `protobuf:"bytes,3,rep,name=clusters,proto3" json:"clusters,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
	XXX_unrecognized     []byte                             `json:"-"`
	XXX_sizecache        int32                              `json:"-"`
}

func (m *Model_ClusteringMetrics) Reset()         { *m = Model_ClusteringMetrics{} }
func (m *Model_ClusteringMetrics) String() string { return proto.CompactTextString(m) }
func (*Model_ClusteringMetrics) ProtoMessage()    {}
func (*Model_ClusteringMetrics) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 5}
}

func (m *Model_ClusteringMetrics) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_ClusteringMetrics.Unmarshal(m, b)
}
func (m *Model_ClusteringMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_ClusteringMetrics.Marshal(b, m, deterministic)
}
func (m *Model_ClusteringMetrics) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_ClusteringMetrics.Merge(m, src)
}
func (m *Model_ClusteringMetrics) XXX_Size() int {
	return xxx_messageInfo_Model_ClusteringMetrics.Size(m)
}
func (m *Model_ClusteringMetrics) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_ClusteringMetrics.DiscardUnknown(m)
}

var xxx_messageInfo_Model_ClusteringMetrics proto.InternalMessageInfo

func (m *Model_ClusteringMetrics) GetDaviesBouldinIndex() *wrappers.DoubleValue {
	if m != nil {
		return m.DaviesBouldinIndex
	}
	return nil
}

func (m *Model_ClusteringMetrics) GetMeanSquaredDistance() *wrappers.DoubleValue {
	if m != nil {
		return m.MeanSquaredDistance
	}
	return nil
}

func (m *Model_ClusteringMetrics) GetClusters() []*Model_ClusteringMetrics_Cluster {
	if m != nil {
		return m.Clusters
	}
	return nil
}

// Message containing the information about one cluster.
type Model_ClusteringMetrics_Cluster struct {
	// Centroid id.
	CentroidId int64 `protobuf:"varint,1,opt,name=centroid_id,json=centroidId,proto3" json:"centroid_id,omitempty"`
	// Values of highly variant features for this cluster.
	FeatureValues []*Model_ClusteringMetrics_Cluster_FeatureValue `protobuf:"bytes,2,rep,name=feature_values,json=featureValues,proto3" json:"feature_values,omitempty"`
	// Count of training data rows that were assigned to this cluster.
	Count                *wrappers.Int64Value `protobuf:"bytes,3,opt,name=count,proto3" json:"count,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *Model_ClusteringMetrics_Cluster) Reset()         { *m = Model_ClusteringMetrics_Cluster{} }
func (m *Model_ClusteringMetrics_Cluster) String() string { return proto.CompactTextString(m) }
func (*Model_ClusteringMetrics_Cluster) ProtoMessage()    {}
func (*Model_ClusteringMetrics_Cluster) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 5, 0}
}

func (m *Model_ClusteringMetrics_Cluster) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster.Unmarshal(m, b)
}
func (m *Model_ClusteringMetrics_Cluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster.Marshal(b, m, deterministic)
}
func (m *Model_ClusteringMetrics_Cluster) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_ClusteringMetrics_Cluster.Merge(m, src)
}
func (m *Model_ClusteringMetrics_Cluster) XXX_Size() int {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster.Size(m)
}
func (m *Model_ClusteringMetrics_Cluster) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_ClusteringMetrics_Cluster.DiscardUnknown(m)
}

var xxx_messageInfo_Model_ClusteringMetrics_Cluster proto.InternalMessageInfo

func (m *Model_ClusteringMetrics_Cluster) GetCentroidId() int64 {
	if m != nil {
		return m.CentroidId
	}
	return 0
}

func (m *Model_ClusteringMetrics_Cluster) GetFeatureValues() []*Model_ClusteringMetrics_Cluster_FeatureValue {
	if m != nil {
		return m.FeatureValues
	}
	return nil
}

func (m *Model_ClusteringMetrics_Cluster) GetCount() *wrappers.Int64Value {
	if m != nil {
		return m.Count
	}
	return nil
}

// Representative value of a single feature within the cluster.
type Model_ClusteringMetrics_Cluster_FeatureValue struct {
	// The feature column name.
	FeatureColumn string `protobuf:"bytes,1,opt,name=feature_column,json=featureColumn,proto3" json:"feature_column,omitempty"`
	// Types that are valid to be assigned to Value:
	//	*Model_ClusteringMetrics_Cluster_FeatureValue_NumericalValue
	//	*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_
	Value                isModel_ClusteringMetrics_Cluster_FeatureValue_Value `protobuf_oneof:"value"`
	XXX_NoUnkeyedLiteral struct{}                                             `json:"-"`
	XXX_unrecognized     []byte                                               `json:"-"`
	XXX_sizecache        int32                                                `json:"-"`
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue) Reset() {
	*m = Model_ClusteringMetrics_Cluster_FeatureValue{}
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue) String() string {
	return proto.CompactTextString(m)
}
func (*Model_ClusteringMetrics_Cluster_FeatureValue) ProtoMessage() {}
func (*Model_ClusteringMetrics_Cluster_FeatureValue) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 5, 0, 0}
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue.Unmarshal(m, b)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue.Marshal(b, m, deterministic)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue.Merge(m, src)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue) XXX_Size() int {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue.Size(m)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue.DiscardUnknown(m)
}

var xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue proto.InternalMessageInfo

func (m *Model_ClusteringMetrics_Cluster_FeatureValue) GetFeatureColumn() string {
	if m != nil {
		return m.FeatureColumn
	}
	return ""
}

type isModel_ClusteringMetrics_Cluster_FeatureValue_Value interface {
	isModel_ClusteringMetrics_Cluster_FeatureValue_Value()
}

type Model_ClusteringMetrics_Cluster_FeatureValue_NumericalValue struct {
	NumericalValue *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=numerical_value,json=numericalValue,proto3,oneof"`
}

type Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_ struct {
	CategoricalValue *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue `protobuf:"bytes,3,opt,name=categorical_value,json=categoricalValue,proto3,oneof"`
}

func (*Model_ClusteringMetrics_Cluster_FeatureValue_NumericalValue) isModel_ClusteringMetrics_Cluster_FeatureValue_Value() {
}

func (*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_) isModel_ClusteringMetrics_Cluster_FeatureValue_Value() {
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue) GetValue() isModel_ClusteringMetrics_Cluster_FeatureValue_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue) GetNumericalValue() *wrappers.DoubleValue {
	if x, ok := m.GetValue().(*Model_ClusteringMetrics_Cluster_FeatureValue_NumericalValue); ok {
		return x.NumericalValue
	}
	return nil
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue) GetCategoricalValue() *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue {
	if x, ok := m.GetValue().(*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_); ok {
		return x.CategoricalValue
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*Model_ClusteringMetrics_Cluster_FeatureValue) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*Model_ClusteringMetrics_Cluster_FeatureValue_NumericalValue)(nil),
		(*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_)(nil),
	}
}

// Representative value of a categorical feature.
type Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue struct {
	// Counts of all categories for the categorical feature. If there are
	// more than ten categories, we return top ten (by count) and return
	// one more CategoryCount with category ‘_OTHER_’ and count as
	// aggregate counts of remaining categories.
	CategoryCounts       []*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount `protobuf:"bytes,1,rep,name=category_counts,json=categoryCounts,proto3" json:"category_counts,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                                                       `json:"-"`
	XXX_unrecognized     []byte                                                                         `json:"-"`
	XXX_sizecache        int32                                                                          `json:"-"`
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) Reset() {
	*m = Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue{}
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) String() string {
	return proto.CompactTextString(m)
}
func (*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) ProtoMessage() {}
func (*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 5, 0, 0, 0}
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue.Unmarshal(m, b)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue.Marshal(b, m, deterministic)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue.Merge(m, src)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) XXX_Size() int {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue.Size(m)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue.DiscardUnknown(m)
}

var xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue proto.InternalMessageInfo

func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue) GetCategoryCounts() []*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount {
	if m != nil {
		return m.CategoryCounts
	}
	return nil
}

// Represents the count of a single category within the cluster.
type Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount struct {
	// The name of category.
	Category string `protobuf:"bytes,1,opt,name=category,proto3" json:"category,omitempty"`
	// The count of training samples matching the category within the
	// cluster.
	Count                *wrappers.Int64Value `protobuf:"bytes,2,opt,name=count,proto3" json:"count,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) Reset() {
	*m = Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount{}
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) String() string {
	return proto.CompactTextString(m)
}
func (*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) ProtoMessage() {}
func (*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 5, 0, 0, 0, 0}
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount.Unmarshal(m, b)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount.Marshal(b, m, deterministic)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount.Merge(m, src)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) XXX_Size() int {
	return xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount.Size(m)
}
func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount.DiscardUnknown(m)
}

var xxx_messageInfo_Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount proto.InternalMessageInfo

func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) GetCategory() string {
	if m != nil {
		return m.Category
	}
	return ""
}

func (m *Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount) GetCount() *wrappers.Int64Value {
	if m != nil {
		return m.Count
	}
	return nil
}

// Evaluation metrics of a model. These are either computed on all training
// data or just the eval data based on whether eval data was used during
// training. These are not present for imported models.
type Model_EvaluationMetrics struct {
	// Types that are valid to be assigned to Metrics:
	//	*Model_EvaluationMetrics_RegressionMetrics
	//	*Model_EvaluationMetrics_BinaryClassificationMetrics
	//	*Model_EvaluationMetrics_MultiClassClassificationMetrics
	//	*Model_EvaluationMetrics_ClusteringMetrics
	Metrics              isModel_EvaluationMetrics_Metrics `protobuf_oneof:"metrics"`
	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
	XXX_unrecognized     []byte                            `json:"-"`
	XXX_sizecache        int32                             `json:"-"`
}

func (m *Model_EvaluationMetrics) Reset()         { *m = Model_EvaluationMetrics{} }
func (m *Model_EvaluationMetrics) String() string { return proto.CompactTextString(m) }
func (*Model_EvaluationMetrics) ProtoMessage()    {}
func (*Model_EvaluationMetrics) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 6}
}

func (m *Model_EvaluationMetrics) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_EvaluationMetrics.Unmarshal(m, b)
}
func (m *Model_EvaluationMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_EvaluationMetrics.Marshal(b, m, deterministic)
}
func (m *Model_EvaluationMetrics) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_EvaluationMetrics.Merge(m, src)
}
func (m *Model_EvaluationMetrics) XXX_Size() int {
	return xxx_messageInfo_Model_EvaluationMetrics.Size(m)
}
func (m *Model_EvaluationMetrics) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_EvaluationMetrics.DiscardUnknown(m)
}

var xxx_messageInfo_Model_EvaluationMetrics proto.InternalMessageInfo

type isModel_EvaluationMetrics_Metrics interface {
	isModel_EvaluationMetrics_Metrics()
}

type Model_EvaluationMetrics_RegressionMetrics struct {
	RegressionMetrics *Model_RegressionMetrics `protobuf:"bytes,1,opt,name=regression_metrics,json=regressionMetrics,proto3,oneof"`
}

type Model_EvaluationMetrics_BinaryClassificationMetrics struct {
	BinaryClassificationMetrics *Model_BinaryClassificationMetrics `protobuf:"bytes,2,opt,name=binary_classification_metrics,json=binaryClassificationMetrics,proto3,oneof"`
}

type Model_EvaluationMetrics_MultiClassClassificationMetrics struct {
	MultiClassClassificationMetrics *Model_MultiClassClassificationMetrics `protobuf:"bytes,3,opt,name=multi_class_classification_metrics,json=multiClassClassificationMetrics,proto3,oneof"`
}

type Model_EvaluationMetrics_ClusteringMetrics struct {
	ClusteringMetrics *Model_ClusteringMetrics `protobuf:"bytes,4,opt,name=clustering_metrics,json=clusteringMetrics,proto3,oneof"`
}

func (*Model_EvaluationMetrics_RegressionMetrics) isModel_EvaluationMetrics_Metrics() {}

func (*Model_EvaluationMetrics_BinaryClassificationMetrics) isModel_EvaluationMetrics_Metrics() {}

func (*Model_EvaluationMetrics_MultiClassClassificationMetrics) isModel_EvaluationMetrics_Metrics() {}

func (*Model_EvaluationMetrics_ClusteringMetrics) isModel_EvaluationMetrics_Metrics() {}

func (m *Model_EvaluationMetrics) GetMetrics() isModel_EvaluationMetrics_Metrics {
	if m != nil {
		return m.Metrics
	}
	return nil
}

func (m *Model_EvaluationMetrics) GetRegressionMetrics() *Model_RegressionMetrics {
	if x, ok := m.GetMetrics().(*Model_EvaluationMetrics_RegressionMetrics); ok {
		return x.RegressionMetrics
	}
	return nil
}

func (m *Model_EvaluationMetrics) GetBinaryClassificationMetrics() *Model_BinaryClassificationMetrics {
	if x, ok := m.GetMetrics().(*Model_EvaluationMetrics_BinaryClassificationMetrics); ok {
		return x.BinaryClassificationMetrics
	}
	return nil
}

func (m *Model_EvaluationMetrics) GetMultiClassClassificationMetrics() *Model_MultiClassClassificationMetrics {
	if x, ok := m.GetMetrics().(*Model_EvaluationMetrics_MultiClassClassificationMetrics); ok {
		return x.MultiClassClassificationMetrics
	}
	return nil
}

func (m *Model_EvaluationMetrics) GetClusteringMetrics() *Model_ClusteringMetrics {
	if x, ok := m.GetMetrics().(*Model_EvaluationMetrics_ClusteringMetrics); ok {
		return x.ClusteringMetrics
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*Model_EvaluationMetrics) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*Model_EvaluationMetrics_RegressionMetrics)(nil),
		(*Model_EvaluationMetrics_BinaryClassificationMetrics)(nil),
		(*Model_EvaluationMetrics_MultiClassClassificationMetrics)(nil),
		(*Model_EvaluationMetrics_ClusteringMetrics)(nil),
	}
}

// Information about a single training query run for the model.
type Model_TrainingRun struct {
	// Options that were used for this training run, includes
	// user specified and default options that were used.
	TrainingOptions *Model_TrainingRun_TrainingOptions `protobuf:"bytes,1,opt,name=training_options,json=trainingOptions,proto3" json:"training_options,omitempty"`
	// The start time of this training run.
	StartTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// Output of each iteration run, results.size() <= max_iterations.
	Results []*Model_TrainingRun_IterationResult `protobuf:"bytes,6,rep,name=results,proto3" json:"results,omitempty"`
	// The evaluation metrics over training/eval data that were computed at the
	// end of training.
	EvaluationMetrics    *Model_EvaluationMetrics `protobuf:"bytes,7,opt,name=evaluation_metrics,json=evaluationMetrics,proto3" json:"evaluation_metrics,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

func (m *Model_TrainingRun) Reset()         { *m = Model_TrainingRun{} }
func (m *Model_TrainingRun) String() string { return proto.CompactTextString(m) }
func (*Model_TrainingRun) ProtoMessage()    {}
func (*Model_TrainingRun) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 7}
}

func (m *Model_TrainingRun) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_TrainingRun.Unmarshal(m, b)
}
func (m *Model_TrainingRun) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_TrainingRun.Marshal(b, m, deterministic)
}
func (m *Model_TrainingRun) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_TrainingRun.Merge(m, src)
}
func (m *Model_TrainingRun) XXX_Size() int {
	return xxx_messageInfo_Model_TrainingRun.Size(m)
}
func (m *Model_TrainingRun) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_TrainingRun.DiscardUnknown(m)
}

var xxx_messageInfo_Model_TrainingRun proto.InternalMessageInfo

func (m *Model_TrainingRun) GetTrainingOptions() *Model_TrainingRun_TrainingOptions {
	if m != nil {
		return m.TrainingOptions
	}
	return nil
}

func (m *Model_TrainingRun) GetStartTime() *timestamp.Timestamp {
	if m != nil {
		return m.StartTime
	}
	return nil
}

func (m *Model_TrainingRun) GetResults() []*Model_TrainingRun_IterationResult {
	if m != nil {
		return m.Results
	}
	return nil
}

func (m *Model_TrainingRun) GetEvaluationMetrics() *Model_EvaluationMetrics {
	if m != nil {
		return m.EvaluationMetrics
	}
	return nil
}

type Model_TrainingRun_TrainingOptions struct {
	// The maximum number of iterations in training. Used only for iterative
	// training algorithms.
	MaxIterations int64 `protobuf:"varint,1,opt,name=max_iterations,json=maxIterations,proto3" json:"max_iterations,omitempty"`
	// Type of loss function used during training run.
	LossType Model_LossType `protobuf:"varint,2,opt,name=loss_type,json=lossType,proto3,enum=google.cloud.bigquery.v2.Model_LossType" json:"loss_type,omitempty"`
	// Learning rate in training. Used only for iterative training algorithms.
	LearnRate float64 `protobuf:"fixed64,3,opt,name=learn_rate,json=learnRate,proto3" json:"learn_rate,omitempty"`
	// L1 regularization coefficient.
	L1Regularization *wrappers.DoubleValue `protobuf:"bytes,4,opt,name=l1_regularization,json=l1Regularization,proto3" json:"l1_regularization,omitempty"`
	// L2 regularization coefficient.
	L2Regularization *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=l2_regularization,json=l2Regularization,proto3" json:"l2_regularization,omitempty"`
	// When early_stop is true, stops training when accuracy improvement is
	// less than 'min_relative_progress'. Used only for iterative training
	// algorithms.
	MinRelativeProgress *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=min_relative_progress,json=minRelativeProgress,proto3" json:"min_relative_progress,omitempty"`
	// Whether to train a model from the last checkpoint.
	WarmStart *wrappers.BoolValue `protobuf:"bytes,7,opt,name=warm_start,json=warmStart,proto3" json:"warm_start,omitempty"`
	// Whether to stop early when the loss doesn't improve significantly
	// any more (compared to min_relative_progress). Used only for iterative
	// training algorithms.
	EarlyStop *wrappers.BoolValue `protobuf:"bytes,8,opt,name=early_stop,json=earlyStop,proto3" json:"early_stop,omitempty"`
	// Name of input label columns in training data.
	InputLabelColumns []string `protobuf:"bytes,9,rep,name=input_label_columns,json=inputLabelColumns,proto3" json:"input_label_columns,omitempty"`
	// The data split type for training and evaluation, e.g. RANDOM.
	DataSplitMethod Model_DataSplitMethod `protobuf:"varint,10,opt,name=data_split_method,json=dataSplitMethod,proto3,enum=google.cloud.bigquery.v2.Model_DataSplitMethod" json:"data_split_method,omitempty"`
	// The fraction of evaluation data over the whole input data. The rest
	// of data will be used as training data. The format should be double.
	// Accurate to two decimal places.
	// Default value is 0.2.
	DataSplitEvalFraction float64 `protobuf:"fixed64,11,opt,name=data_split_eval_fraction,json=dataSplitEvalFraction,proto3" json:"data_split_eval_fraction,omitempty"`
	// The column to split data with. This column won't be used as a
	// feature.
	// 1. When data_split_method is CUSTOM, the corresponding column should
	// be boolean. The rows with true value tag are eval data, and the false
	// are training data.
	// 2. When data_split_method is SEQ, the first DATA_SPLIT_EVAL_FRACTION
	// rows (from smallest to largest) in the corresponding column are used
	// as training data, and the rest are eval data. It respects the order
	// in Orderable data types:
	// https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#data-type-properties
	DataSplitColumn string `protobuf:"bytes,12,opt,name=data_split_column,json=dataSplitColumn,proto3" json:"data_split_column,omitempty"`
	// The strategy to determine learn rate for the current iteration.
	LearnRateStrategy Model_LearnRateStrategy `protobuf:"varint,13,opt,name=learn_rate_strategy,json=learnRateStrategy,proto3,enum=google.cloud.bigquery.v2.Model_LearnRateStrategy" json:"learn_rate_strategy,omitempty"`
	// Specifies the initial learning rate for the line search learn rate
	// strategy.
	InitialLearnRate float64 `protobuf:"fixed64,16,opt,name=initial_learn_rate,json=initialLearnRate,proto3" json:"initial_learn_rate,omitempty"`
	// Weights associated with each label class, for rebalancing the
	// training data. Only applicable for classification models.
	LabelClassWeights map[string]float64 `protobuf:"bytes,17,rep,name=label_class_weights,json=labelClassWeights,proto3" json:"label_class_weights,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
	// Distance type for clustering models.
	DistanceType Model_DistanceType `protobuf:"varint,20,opt,name=distance_type,json=distanceType,proto3,enum=google.cloud.bigquery.v2.Model_DistanceType" json:"distance_type,omitempty"`
	// Number of clusters for clustering models.
	NumClusters int64 `protobuf:"varint,21,opt,name=num_clusters,json=numClusters,proto3" json:"num_clusters,omitempty"`
	// [Beta] Google Cloud Storage URI from which the model was imported. Only
	// applicable for imported models.
	ModelUri string `protobuf:"bytes,22,opt,name=model_uri,json=modelUri,proto3" json:"model_uri,omitempty"`
	// Optimization strategy for training linear regression models.
	OptimizationStrategy Model_OptimizationStrategy `protobuf:"varint,23,opt,name=optimization_strategy,json=optimizationStrategy,proto3,enum=google.cloud.bigquery.v2.Model_OptimizationStrategy" json:"optimization_strategy,omitempty"`
	// The method used to initialize the centroids for kmeans algorithm.
	KmeansInitializationMethod Model_KmeansEnums_KmeansInitializationMethod `protobuf:"varint,33,opt,name=kmeans_initialization_method,json=kmeansInitializationMethod,proto3,enum=google.cloud.bigquery.v2.Model_KmeansEnums_KmeansInitializationMethod" json:"kmeans_initialization_method,omitempty"`
	// The column used to provide the initial centroids for kmeans algorithm
	// when kmeans_initialization_method is CUSTOM.
	KmeansInitializationColumn string   `protobuf:"bytes,34,opt,name=kmeans_initialization_column,json=kmeansInitializationColumn,proto3" json:"kmeans_initialization_column,omitempty"`
	XXX_NoUnkeyedLiteral       struct{} `json:"-"`
	XXX_unrecognized           []byte   `json:"-"`
	XXX_sizecache              int32    `json:"-"`
}

func (m *Model_TrainingRun_TrainingOptions) Reset()         { *m = Model_TrainingRun_TrainingOptions{} }
func (m *Model_TrainingRun_TrainingOptions) String() string { return proto.CompactTextString(m) }
func (*Model_TrainingRun_TrainingOptions) ProtoMessage()    {}
func (*Model_TrainingRun_TrainingOptions) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 7, 0}
}

func (m *Model_TrainingRun_TrainingOptions) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_TrainingRun_TrainingOptions.Unmarshal(m, b)
}
func (m *Model_TrainingRun_TrainingOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_TrainingRun_TrainingOptions.Marshal(b, m, deterministic)
}
func (m *Model_TrainingRun_TrainingOptions) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_TrainingRun_TrainingOptions.Merge(m, src)
}
func (m *Model_TrainingRun_TrainingOptions) XXX_Size() int {
	return xxx_messageInfo_Model_TrainingRun_TrainingOptions.Size(m)
}
func (m *Model_TrainingRun_TrainingOptions) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_TrainingRun_TrainingOptions.DiscardUnknown(m)
}

var xxx_messageInfo_Model_TrainingRun_TrainingOptions proto.InternalMessageInfo

func (m *Model_TrainingRun_TrainingOptions) GetMaxIterations() int64 {
	if m != nil {
		return m.MaxIterations
	}
	return 0
}

func (m *Model_TrainingRun_TrainingOptions) GetLossType() Model_LossType {
	if m != nil {
		return m.LossType
	}
	return Model_LOSS_TYPE_UNSPECIFIED
}

func (m *Model_TrainingRun_TrainingOptions) GetLearnRate() float64 {
	if m != nil {
		return m.LearnRate
	}
	return 0
}

func (m *Model_TrainingRun_TrainingOptions) GetL1Regularization() *wrappers.DoubleValue {
	if m != nil {
		return m.L1Regularization
	}
	return nil
}

func (m *Model_TrainingRun_TrainingOptions) GetL2Regularization() *wrappers.DoubleValue {
	if m != nil {
		return m.L2Regularization
	}
	return nil
}

func (m *Model_TrainingRun_TrainingOptions) GetMinRelativeProgress() *wrappers.DoubleValue {
	if m != nil {
		return m.MinRelativeProgress
	}
	return nil
}

func (m *Model_TrainingRun_TrainingOptions) GetWarmStart() *wrappers.BoolValue {
	if m != nil {
		return m.WarmStart
	}
	return nil
}

func (m *Model_TrainingRun_TrainingOptions) GetEarlyStop() *wrappers.BoolValue {
	if m != nil {
		return m.EarlyStop
	}
	return nil
}

func (m *Model_TrainingRun_TrainingOptions) GetInputLabelColumns() []string {
	if m != nil {
		return m.InputLabelColumns
	}
	return nil
}

func (m *Model_TrainingRun_TrainingOptions) GetDataSplitMethod() Model_DataSplitMethod {
	if m != nil {
		return m.DataSplitMethod
	}
	return Model_DATA_SPLIT_METHOD_UNSPECIFIED
}

func (m *Model_TrainingRun_TrainingOptions) GetDataSplitEvalFraction() float64 {
	if m != nil {
		return m.DataSplitEvalFraction
	}
	return 0
}

func (m *Model_TrainingRun_TrainingOptions) GetDataSplitColumn() string {
	if m != nil {
		return m.DataSplitColumn
	}
	return ""
}

func (m *Model_TrainingRun_TrainingOptions) GetLearnRateStrategy() Model_LearnRateStrategy {
	if m != nil {
		return m.LearnRateStrategy
	}
	return Model_LEARN_RATE_STRATEGY_UNSPECIFIED
}

func (m *Model_TrainingRun_TrainingOptions) GetInitialLearnRate() float64 {
	if m != nil {
		return m.InitialLearnRate
	}
	return 0
}

func (m *Model_TrainingRun_TrainingOptions) GetLabelClassWeights() map[string]float64 {
	if m != nil {
		return m.LabelClassWeights
	}
	return nil
}

func (m *Model_TrainingRun_TrainingOptions) GetDistanceType() Model_DistanceType {
	if m != nil {
		return m.DistanceType
	}
	return Model_DISTANCE_TYPE_UNSPECIFIED
}

func (m *Model_TrainingRun_TrainingOptions) GetNumClusters() int64 {
	if m != nil {
		return m.NumClusters
	}
	return 0
}

func (m *Model_TrainingRun_TrainingOptions) GetModelUri() string {
	if m != nil {
		return m.ModelUri
	}
	return ""
}

func (m *Model_TrainingRun_TrainingOptions) GetOptimizationStrategy() Model_OptimizationStrategy {
	if m != nil {
		return m.OptimizationStrategy
	}
	return Model_OPTIMIZATION_STRATEGY_UNSPECIFIED
}

func (m *Model_TrainingRun_TrainingOptions) GetKmeansInitializationMethod() Model_KmeansEnums_KmeansInitializationMethod {
	if m != nil {
		return m.KmeansInitializationMethod
	}
	return Model_KmeansEnums_KMEANS_INITIALIZATION_METHOD_UNSPECIFIED
}

func (m *Model_TrainingRun_TrainingOptions) GetKmeansInitializationColumn() string {
	if m != nil {
		return m.KmeansInitializationColumn
	}
	return ""
}

// Information about a single iteration of the training run.
type Model_TrainingRun_IterationResult struct {
	// Index of the iteration, 0 based.
	Index *wrappers.Int32Value `protobuf:"bytes,1,opt,name=index,proto3" json:"index,omitempty"`
	// Time taken to run the iteration in milliseconds.
	DurationMs *wrappers.Int64Value `protobuf:"bytes,4,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"`
	// Loss computed on the training data at the end of iteration.
	TrainingLoss *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=training_loss,json=trainingLoss,proto3" json:"training_loss,omitempty"`
	// Loss computed on the eval data at the end of iteration.
	EvalLoss *wrappers.DoubleValue `protobuf:"bytes,6,opt,name=eval_loss,json=evalLoss,proto3" json:"eval_loss,omitempty"`
	// Learn rate used for this iteration.
	LearnRate float64 `protobuf:"fixed64,7,opt,name=learn_rate,json=learnRate,proto3" json:"learn_rate,omitempty"`
	// Information about top clusters for clustering models.
	ClusterInfos         []*Model_TrainingRun_IterationResult_ClusterInfo `protobuf:"bytes,8,rep,name=cluster_infos,json=clusterInfos,proto3" json:"cluster_infos,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                         `json:"-"`
	XXX_unrecognized     []byte                                           `json:"-"`
	XXX_sizecache        int32                                            `json:"-"`
}

func (m *Model_TrainingRun_IterationResult) Reset()         { *m = Model_TrainingRun_IterationResult{} }
func (m *Model_TrainingRun_IterationResult) String() string { return proto.CompactTextString(m) }
func (*Model_TrainingRun_IterationResult) ProtoMessage()    {}
func (*Model_TrainingRun_IterationResult) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 7, 1}
}

func (m *Model_TrainingRun_IterationResult) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_TrainingRun_IterationResult.Unmarshal(m, b)
}
func (m *Model_TrainingRun_IterationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_TrainingRun_IterationResult.Marshal(b, m, deterministic)
}
func (m *Model_TrainingRun_IterationResult) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_TrainingRun_IterationResult.Merge(m, src)
}
func (m *Model_TrainingRun_IterationResult) XXX_Size() int {
	return xxx_messageInfo_Model_TrainingRun_IterationResult.Size(m)
}
func (m *Model_TrainingRun_IterationResult) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_TrainingRun_IterationResult.DiscardUnknown(m)
}

var xxx_messageInfo_Model_TrainingRun_IterationResult proto.InternalMessageInfo

func (m *Model_TrainingRun_IterationResult) GetIndex() *wrappers.Int32Value {
	if m != nil {
		return m.Index
	}
	return nil
}

func (m *Model_TrainingRun_IterationResult) GetDurationMs() *wrappers.Int64Value {
	if m != nil {
		return m.DurationMs
	}
	return nil
}

func (m *Model_TrainingRun_IterationResult) GetTrainingLoss() *wrappers.DoubleValue {
	if m != nil {
		return m.TrainingLoss
	}
	return nil
}

func (m *Model_TrainingRun_IterationResult) GetEvalLoss() *wrappers.DoubleValue {
	if m != nil {
		return m.EvalLoss
	}
	return nil
}

func (m *Model_TrainingRun_IterationResult) GetLearnRate() float64 {
	if m != nil {
		return m.LearnRate
	}
	return 0
}

func (m *Model_TrainingRun_IterationResult) GetClusterInfos() []*Model_TrainingRun_IterationResult_ClusterInfo {
	if m != nil {
		return m.ClusterInfos
	}
	return nil
}

// Information about a single cluster for clustering model.
type Model_TrainingRun_IterationResult_ClusterInfo struct {
	// Centroid id.
	CentroidId int64 `protobuf:"varint,1,opt,name=centroid_id,json=centroidId,proto3" json:"centroid_id,omitempty"`
	// Cluster radius, the average distance from centroid
	// to each point assigned to the cluster.
	ClusterRadius *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=cluster_radius,json=clusterRadius,proto3" json:"cluster_radius,omitempty"`
	// Cluster size, the total number of points assigned to the cluster.
	ClusterSize          *wrappers.Int64Value `protobuf:"bytes,3,opt,name=cluster_size,json=clusterSize,proto3" json:"cluster_size,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *Model_TrainingRun_IterationResult_ClusterInfo) Reset() {
	*m = Model_TrainingRun_IterationResult_ClusterInfo{}
}
func (m *Model_TrainingRun_IterationResult_ClusterInfo) String() string {
	return proto.CompactTextString(m)
}
func (*Model_TrainingRun_IterationResult_ClusterInfo) ProtoMessage() {}
func (*Model_TrainingRun_IterationResult_ClusterInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{0, 7, 1, 0}
}

func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.Unmarshal(m, b)
}
func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.Marshal(b, m, deterministic)
}
func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.Merge(m, src)
}
func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_Size() int {
	return xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.Size(m)
}
func (m *Model_TrainingRun_IterationResult_ClusterInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo.DiscardUnknown(m)
}

var xxx_messageInfo_Model_TrainingRun_IterationResult_ClusterInfo proto.InternalMessageInfo

func (m *Model_TrainingRun_IterationResult_ClusterInfo) GetCentroidId() int64 {
	if m != nil {
		return m.CentroidId
	}
	return 0
}

func (m *Model_TrainingRun_IterationResult_ClusterInfo) GetClusterRadius() *wrappers.DoubleValue {
	if m != nil {
		return m.ClusterRadius
	}
	return nil
}

func (m *Model_TrainingRun_IterationResult_ClusterInfo) GetClusterSize() *wrappers.Int64Value {
	if m != nil {
		return m.ClusterSize
	}
	return nil
}

type GetModelRequest struct {
	// Project ID of the requested model.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Dataset ID of the requested model.
	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
	// Model ID of the requested model.
	ModelId              string   `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *GetModelRequest) Reset()         { *m = GetModelRequest{} }
func (m *GetModelRequest) String() string { return proto.CompactTextString(m) }
func (*GetModelRequest) ProtoMessage()    {}
func (*GetModelRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{1}
}

func (m *GetModelRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_GetModelRequest.Unmarshal(m, b)
}
func (m *GetModelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_GetModelRequest.Marshal(b, m, deterministic)
}
func (m *GetModelRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_GetModelRequest.Merge(m, src)
}
func (m *GetModelRequest) XXX_Size() int {
	return xxx_messageInfo_GetModelRequest.Size(m)
}
func (m *GetModelRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_GetModelRequest.DiscardUnknown(m)
}

var xxx_messageInfo_GetModelRequest proto.InternalMessageInfo

func (m *GetModelRequest) GetProjectId() string {
	if m != nil {
		return m.ProjectId
	}
	return ""
}

func (m *GetModelRequest) GetDatasetId() string {
	if m != nil {
		return m.DatasetId
	}
	return ""
}

func (m *GetModelRequest) GetModelId() string {
	if m != nil {
		return m.ModelId
	}
	return ""
}

type PatchModelRequest struct {
	// Project ID of the model to patch.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Dataset ID of the model to patch.
	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
	// Model ID of the model to patch.
	ModelId string `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
	// Patched model.
	// Follows RFC5789 patch semantics. Missing fields are not updated.
	// To clear a field, explicitly set to default value.
	Model                *Model   `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *PatchModelRequest) Reset()         { *m = PatchModelRequest{} }
func (m *PatchModelRequest) String() string { return proto.CompactTextString(m) }
func (*PatchModelRequest) ProtoMessage()    {}
func (*PatchModelRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{2}
}

func (m *PatchModelRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PatchModelRequest.Unmarshal(m, b)
}
func (m *PatchModelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PatchModelRequest.Marshal(b, m, deterministic)
}
func (m *PatchModelRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PatchModelRequest.Merge(m, src)
}
func (m *PatchModelRequest) XXX_Size() int {
	return xxx_messageInfo_PatchModelRequest.Size(m)
}
func (m *PatchModelRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_PatchModelRequest.DiscardUnknown(m)
}

var xxx_messageInfo_PatchModelRequest proto.InternalMessageInfo

func (m *PatchModelRequest) GetProjectId() string {
	if m != nil {
		return m.ProjectId
	}
	return ""
}

func (m *PatchModelRequest) GetDatasetId() string {
	if m != nil {
		return m.DatasetId
	}
	return ""
}

func (m *PatchModelRequest) GetModelId() string {
	if m != nil {
		return m.ModelId
	}
	return ""
}

func (m *PatchModelRequest) GetModel() *Model {
	if m != nil {
		return m.Model
	}
	return nil
}

type DeleteModelRequest struct {
	// Project ID of the model to delete.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Dataset ID of the model to delete.
	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
	// Model ID of the model to delete.
	ModelId              string   `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *DeleteModelRequest) Reset()         { *m = DeleteModelRequest{} }
func (m *DeleteModelRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteModelRequest) ProtoMessage()    {}
func (*DeleteModelRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{3}
}

func (m *DeleteModelRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DeleteModelRequest.Unmarshal(m, b)
}
func (m *DeleteModelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DeleteModelRequest.Marshal(b, m, deterministic)
}
func (m *DeleteModelRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DeleteModelRequest.Merge(m, src)
}
func (m *DeleteModelRequest) XXX_Size() int {
	return xxx_messageInfo_DeleteModelRequest.Size(m)
}
func (m *DeleteModelRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_DeleteModelRequest.DiscardUnknown(m)
}

var xxx_messageInfo_DeleteModelRequest proto.InternalMessageInfo

func (m *DeleteModelRequest) GetProjectId() string {
	if m != nil {
		return m.ProjectId
	}
	return ""
}

func (m *DeleteModelRequest) GetDatasetId() string {
	if m != nil {
		return m.DatasetId
	}
	return ""
}

func (m *DeleteModelRequest) GetModelId() string {
	if m != nil {
		return m.ModelId
	}
	return ""
}

type ListModelsRequest struct {
	// Project ID of the models to list.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Dataset ID of the models to list.
	DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"`
	// The maximum number of results to return in a single response page.
	// Leverage the page tokens to iterate through the entire collection.
	MaxResults *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
	// Page token, returned by a previous call to request the next page of
	// results
	PageToken            string   `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ListModelsRequest) Reset()         { *m = ListModelsRequest{} }
func (m *ListModelsRequest) String() string { return proto.CompactTextString(m) }
func (*ListModelsRequest) ProtoMessage()    {}
func (*ListModelsRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{4}
}

func (m *ListModelsRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ListModelsRequest.Unmarshal(m, b)
}
func (m *ListModelsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ListModelsRequest.Marshal(b, m, deterministic)
}
func (m *ListModelsRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ListModelsRequest.Merge(m, src)
}
func (m *ListModelsRequest) XXX_Size() int {
	return xxx_messageInfo_ListModelsRequest.Size(m)
}
func (m *ListModelsRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_ListModelsRequest.DiscardUnknown(m)
}

var xxx_messageInfo_ListModelsRequest proto.InternalMessageInfo

func (m *ListModelsRequest) GetProjectId() string {
	if m != nil {
		return m.ProjectId
	}
	return ""
}

func (m *ListModelsRequest) GetDatasetId() string {
	if m != nil {
		return m.DatasetId
	}
	return ""
}

func (m *ListModelsRequest) GetMaxResults() *wrappers.UInt32Value {
	if m != nil {
		return m.MaxResults
	}
	return nil
}

func (m *ListModelsRequest) GetPageToken() string {
	if m != nil {
		return m.PageToken
	}
	return ""
}

type ListModelsResponse struct {
	// Models in the requested dataset. Only the following fields are populated:
	// model_reference, model_type, creation_time, last_modified_time and
	// labels.
	Models []*Model `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"`
	// A token to request the next page of results.
	NextPageToken        string   `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ListModelsResponse) Reset()         { *m = ListModelsResponse{} }
func (m *ListModelsResponse) String() string { return proto.CompactTextString(m) }
func (*ListModelsResponse) ProtoMessage()    {}
func (*ListModelsResponse) Descriptor() ([]byte, []int) {
	return fileDescriptor_0bf703c728e4b09a, []int{5}
}

func (m *ListModelsResponse) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ListModelsResponse.Unmarshal(m, b)
}
func (m *ListModelsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ListModelsResponse.Marshal(b, m, deterministic)
}
func (m *ListModelsResponse) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ListModelsResponse.Merge(m, src)
}
func (m *ListModelsResponse) XXX_Size() int {
	return xxx_messageInfo_ListModelsResponse.Size(m)
}
func (m *ListModelsResponse) XXX_DiscardUnknown() {
	xxx_messageInfo_ListModelsResponse.DiscardUnknown(m)
}

var xxx_messageInfo_ListModelsResponse proto.InternalMessageInfo

func (m *ListModelsResponse) GetModels() []*Model {
	if m != nil {
		return m.Models
	}
	return nil
}

func (m *ListModelsResponse) GetNextPageToken() string {
	if m != nil {
		return m.NextPageToken
	}
	return ""
}

func init() {
	proto.RegisterEnum("google.cloud.bigquery.v2.Model_ModelType", Model_ModelType_name, Model_ModelType_value)
	proto.RegisterEnum("google.cloud.bigquery.v2.Model_LossType", Model_LossType_name, Model_LossType_value)
	proto.RegisterEnum("google.cloud.bigquery.v2.Model_DistanceType", Model_DistanceType_name, Model_DistanceType_value)
	proto.RegisterEnum("google.cloud.bigquery.v2.Model_DataSplitMethod", Model_DataSplitMethod_name, Model_DataSplitMethod_value)
	proto.RegisterEnum("google.cloud.bigquery.v2.Model_LearnRateStrategy", Model_LearnRateStrategy_name, Model_LearnRateStrategy_value)
	proto.RegisterEnum("google.cloud.bigquery.v2.Model_OptimizationStrategy", Model_OptimizationStrategy_name, Model_OptimizationStrategy_value)
	proto.RegisterEnum("google.cloud.bigquery.v2.Model_KmeansEnums_KmeansInitializationMethod", Model_KmeansEnums_KmeansInitializationMethod_name, Model_KmeansEnums_KmeansInitializationMethod_value)
	proto.RegisterType((*Model)(nil), "google.cloud.bigquery.v2.Model")
	proto.RegisterMapType((map[string]string)(nil), "google.cloud.bigquery.v2.Model.LabelsEntry")
	proto.RegisterType((*Model_KmeansEnums)(nil), "google.cloud.bigquery.v2.Model.KmeansEnums")
	proto.RegisterType((*Model_RegressionMetrics)(nil), "google.cloud.bigquery.v2.Model.RegressionMetrics")
	proto.RegisterType((*Model_AggregateClassificationMetrics)(nil), "google.cloud.bigquery.v2.Model.AggregateClassificationMetrics")
	proto.RegisterType((*Model_BinaryClassificationMetrics)(nil), "google.cloud.bigquery.v2.Model.BinaryClassificationMetrics")
	proto.RegisterType((*Model_BinaryClassificationMetrics_BinaryConfusionMatrix)(nil), "google.cloud.bigquery.v2.Model.BinaryClassificationMetrics.BinaryConfusionMatrix")
	proto.RegisterType((*Model_MultiClassClassificationMetrics)(nil), "google.cloud.bigquery.v2.Model.MultiClassClassificationMetrics")
	proto.RegisterType((*Model_MultiClassClassificationMetrics_ConfusionMatrix)(nil), "google.cloud.bigquery.v2.Model.MultiClassClassificationMetrics.ConfusionMatrix")
	proto.RegisterType((*Model_MultiClassClassificationMetrics_ConfusionMatrix_Entry)(nil), "google.cloud.bigquery.v2.Model.MultiClassClassificationMetrics.ConfusionMatrix.Entry")
	proto.RegisterType((*Model_MultiClassClassificationMetrics_ConfusionMatrix_Row)(nil), "google.cloud.bigquery.v2.Model.MultiClassClassificationMetrics.ConfusionMatrix.Row")
	proto.RegisterType((*Model_ClusteringMetrics)(nil), "google.cloud.bigquery.v2.Model.ClusteringMetrics")
	proto.RegisterType((*Model_ClusteringMetrics_Cluster)(nil), "google.cloud.bigquery.v2.Model.ClusteringMetrics.Cluster")
	proto.RegisterType((*Model_ClusteringMetrics_Cluster_FeatureValue)(nil), "google.cloud.bigquery.v2.Model.ClusteringMetrics.Cluster.FeatureValue")
	proto.RegisterType((*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue)(nil), "google.cloud.bigquery.v2.Model.ClusteringMetrics.Cluster.FeatureValue.CategoricalValue")
	proto.RegisterType((*Model_ClusteringMetrics_Cluster_FeatureValue_CategoricalValue_CategoryCount)(nil), "google.cloud.bigquery.v2.Model.ClusteringMetrics.Cluster.FeatureValue.CategoricalValue.CategoryCount")
	proto.RegisterType((*Model_EvaluationMetrics)(nil), "google.cloud.bigquery.v2.Model.EvaluationMetrics")
	proto.RegisterType((*Model_TrainingRun)(nil), "google.cloud.bigquery.v2.Model.TrainingRun")
	proto.RegisterType((*Model_TrainingRun_TrainingOptions)(nil), "google.cloud.bigquery.v2.Model.TrainingRun.TrainingOptions")
	proto.RegisterMapType((map[string]float64)(nil), "google.cloud.bigquery.v2.Model.TrainingRun.TrainingOptions.LabelClassWeightsEntry")
	proto.RegisterType((*Model_TrainingRun_IterationResult)(nil), "google.cloud.bigquery.v2.Model.TrainingRun.IterationResult")
	proto.RegisterType((*Model_TrainingRun_IterationResult_ClusterInfo)(nil), "google.cloud.bigquery.v2.Model.TrainingRun.IterationResult.ClusterInfo")
	proto.RegisterType((*GetModelRequest)(nil), "google.cloud.bigquery.v2.GetModelRequest")
	proto.RegisterType((*PatchModelRequest)(nil), "google.cloud.bigquery.v2.PatchModelRequest")
	proto.RegisterType((*DeleteModelRequest)(nil), "google.cloud.bigquery.v2.DeleteModelRequest")
	proto.RegisterType((*ListModelsRequest)(nil), "google.cloud.bigquery.v2.ListModelsRequest")
	proto.RegisterType((*ListModelsResponse)(nil), "google.cloud.bigquery.v2.ListModelsResponse")
}

func init() {
	proto.RegisterFile("google/cloud/bigquery/v2/model.proto", fileDescriptor_0bf703c728e4b09a)
}

var fileDescriptor_0bf703c728e4b09a = []byte{
	// 3069 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xdd, 0x6f, 0x1b, 0xc7,
	0xb5, 0x17, 0xf5, 0xcd, 0x43, 0x49, 0x24, 0x47, 0x96, 0x4d, 0xaf, 0xed, 0x58, 0x66, 0x6e, 0xee,
	0xd5, 0x4d, 0x1c, 0x0a, 0x56, 0x92, 0x9b, 0xd8, 0xb9, 0x37, 0x09, 0x45, 0xd2, 0x12, 0x6f, 0x28,
	0x52, 0x5e, 0x52, 0x71, 0x93, 0x16, 0xdd, 0xae, 0x76, 0x87, 0xd4, 0xc4, 0xfb, 0x41, 0xef, 0xcc,
	0x5a, 0x92, 0xdf, 0xda, 0x00, 0x45, 0x51, 0xa0, 0x79, 0x28, 0xd0, 0x02, 0x7d, 0xee, 0x1f, 0x50,
	0x14, 0xfd, 0x0f, 0xda, 0x87, 0x02, 0x7d, 0x2c, 0xd0, 0xf7, 0xbc, 0x14, 0x28, 0xd0, 0xd7, 0xa2,
	0x2f, 0x7d, 0x29, 0xe6, 0x63, 0xc9, 0x25, 0x29, 0x89, 0x54, 0xec, 0x06, 0x7d, 0x91, 0x76, 0xce,
	0x9c, 0xf3, 0x9b, 0x33, 0x67, 0xce, 0x9c, 0x39, 0x73, 0x86, 0xf0, 0x1f, 0x1d, 0xdf, 0xef, 0x38,
	0x78, 0xd3, 0x72, 0xfc, 0xd0, 0xde, 0x3c, 0x24, 0x9d, 0xa7, 0x21, 0x0e, 0x4e, 0x37, 0x9f, 0x6d,
	0x6d, 0xba, 0xbe, 0x8d, 0x9d, 0x42, 0x37, 0xf0, 0x99, 0x8f, 0x72, 0x92, 0xab, 0x20, 0xb8, 0x0a,
	0x11, 0x57, 0xe1, 0xd9, 0x96, 0x56, 0xb8, 0x58, 0xde, 0x08, 0x70, 0x1b, 0x07, 0xd8, 0xb3, 0xb0,
	0x44, 0xd2, 0xde, 0x38, 0x97, 0x9f, 0x32, 0xd3, 0xb3, 0xcd, 0xc0, 0x36, 0xe8, 0x53, 0x35, 0xac,
	0x76, 0x43, 0x31, 0x8b, 0xd6, 0x61, 0xd8, 0xde, 0xc4, 0x6e, 0x97, 0x9d, 0xaa, 0xce, 0xdb, 0xc3,
	0x9d, 0x8c, 0xb8, 0x98, 0x32, 0xd3, 0xed, 0x2a, 0x86, 0x57, 0x86, 0x19, 0x8e, 0x03, 0xb3, 0xdb,
	0xc5, 0x01, 0x55, 0xfd, 0x37, 0x55, 0xbf, 0xd9, 0x25, 0x9b, 0xa6, 0xe7, 0xf9, 0xcc, 0x64, 0xc4,
	0xf7, 0xa2, 0xde, 0x6b, 0xb1, 0x5e, 0xcb, 0x21, 0xd8, 0x63, 0xb2, 0x23, 0xff, 0xd5, 0x87, 0x30,
	0xb7, 0xc7, 0xe7, 0x86, 0x10, 0xcc, 0x62, 0x66, 0x76, 0x72, 0x89, 0xf5, 0xc4, 0x46, 0x52, 0x17,
	0xdf, 0xe8, 0x11, 0xa4, 0x87, 0x26, 0x9e, 0x9b, 0x5e, 0x4f, 0x6c, 0xa4, 0xb6, 0x36, 0x0a, 0xe7,
	0xd9, 0xb0, 0x20, 0xd0, 0xf4, 0x88, 0x5f, 0x5f, 0x71, 0x07, 0xda, 0xe8, 0x55, 0x58, 0xb6, 0x02,
	0x2c, 0x94, 0x33, 0xf8, 0x1c, 0x73, 0x73, 0xeb, 0x89, 0x8d, 0x19, 0x7d, 0x29, 0x22, 0xb6, 0x88,
	0x8b, 0xd1, 0x5d, 0x40, 0x8e, 0x49, 0x99, 0xe1, 0xfa, 0x36, 0x69, 0x13, 0x6c, 0x4b, 0xce, 0x79,
	0xc1, 0x99, 0xe1, 0x3d, 0x7b, 0xaa, 0x43, 0x70, 0xaf, 0x43, 0xca, 0xc6, 0xd4, 0x0a, 0x48, 0x97,
	0x03, 0xe4, 0x96, 0xc4, 0x04, 0xe2, 0x24, 0x3e, 0x68, 0x3b, 0x20, 0xd8, 0xb3, 0x9d, 0x53, 0xc3,
	0x33, 0x5d, 0x9c, 0x5b, 0x11, 0x3c, 0x4b, 0x11, 0xb1, 0x6e, 0xba, 0x18, 0x95, 0x60, 0xde, 0x31,
	0x0f, 0xb1, 0x43, 0x73, 0xe9, 0xf5, 0x99, 0x8d, 0xd4, 0xd6, 0x1b, 0x63, 0xe6, 0x58, 0xa8, 0x09,
	0xee, 0x8a, 0xc7, 0x82, 0x53, 0x5d, 0x89, 0xa2, 0xff, 0x82, 0x34, 0x3e, 0xe9, 0x92, 0x20, 0x36,
	0xc1, 0x8c, 0x50, 0x7b, 0xa5, 0x4f, 0x16, 0x4a, 0x6b, 0xb0, 0xe8, 0xf8, 0x96, 0x68, 0xe7, 0x96,
	0x85, 0x36, 0xbd, 0x36, 0xda, 0x05, 0x90, 0x66, 0x67, 0xa7, 0x5d, 0x9c, 0x5b, 0x58, 0x4f, 0x6c,
	0xac, 0x6c, 0xfd, 0xf7, 0x38, 0x6d, 0xc4, 0xdf, 0xd6, 0x69, 0x17, 0xeb, 0x49, 0x37, 0xfa, 0x44,
	0xfb, 0xb0, 0xcc, 0x02, 0x93, 0x78, 0xc4, 0xeb, 0x18, 0x41, 0xe8, 0xd1, 0x5c, 0x72, 0xb2, 0xa9,
	0xb5, 0x94, 0x90, 0x1e, 0x7a, 0xfa, 0x12, 0xeb, 0x37, 0x28, 0x6a, 0x42, 0xba, 0x8d, 0x4d, 0x16,
	0x06, 0xd8, 0xb0, 0x7c, 0x27, 0x74, 0x3d, 0x9a, 0x03, 0x81, 0xf9, 0xfa, 0xf9, 0x98, 0x4d, 0xb5,
	0x19, 0x9a, 0x4f, 0x9d, 0x87, 0x04, 0x3b, 0xb6, 0xbe, 0xa2, 0x20, 0x4a, 0x12, 0x01, 0x35, 0x60,
	0x59, 0xd8, 0xaf, 0x07, 0x99, 0xba, 0x34, 0xe4, 0x92, 0x00, 0x50, 0x80, 0xda, 0x53, 0x48, 0x7d,
	0xec, 0x62, 0xd3, 0xa3, 0x15, 0x2f, 0x74, 0x69, 0xfe, 0x10, 0x34, 0xd9, 0xac, 0x7a, 0x84, 0x11,
	0xd3, 0x21, 0xcf, 0x85, 0xa1, 0xf7, 0x30, 0x3b, 0xf2, 0x6d, 0x74, 0x17, 0x36, 0x3e, 0xde, 0xab,
	0x14, 0xeb, 0x4d, 0xa3, 0x5a, 0xaf, 0xb6, 0xaa, 0xc5, 0x5a, 0xf5, 0xb3, 0x62, 0xab, 0xda, 0xa8,
	0x1b, 0x7b, 0x95, 0xd6, 0x6e, 0xa3, 0x6c, 0x1c, 0xd4, 0x9b, 0xfb, 0x95, 0x52, 0xf5, 0x61, 0xb5,
	0x52, 0xce, 0x4c, 0x21, 0x80, 0x79, 0xbd, 0x58, 0x2f, 0x37, 0xf6, 0x32, 0x09, 0xfe, 0x5d, 0x3a,
	0x68, 0xb6, 0x1a, 0x7b, 0x99, 0x69, 0xed, 0x27, 0x33, 0x90, 0xd5, 0x71, 0x27, 0xc0, 0x94, 0x4a,
	0xe8, 0x80, 0x58, 0x14, 0xd5, 0x60, 0x95, 0x0f, 0x6c, 0x98, 0x87, 0xd4, 0x77, 0x42, 0x86, 0x0d,
	0x1c, 0x04, 0x7e, 0x20, 0x36, 0x59, 0x6a, 0xeb, 0x66, 0x34, 0xbf, 0x68, 0x53, 0x17, 0xca, 0x7e,
	0x78, 0xe8, 0xe0, 0x4f, 0x4c, 0x27, 0xc4, 0x7a, 0x96, 0x0b, 0x16, 0x95, 0x5c, 0x85, 0x8b, 0xa1,
	0xff, 0x07, 0x24, 0xd0, 0xe8, 0xd3, 0xd0, 0x0c, 0xb0, 0xad, 0xc0, 0xa6, 0x27, 0x00, 0xcb, 0x70,
	0xb9, 0xa6, 0x14, 0x93, 0x58, 0x8f, 0xe0, 0xea, 0x00, 0x96, 0xe3, 0x77, 0x14, 0xde, 0xcc, 0x04,
	0x78, 0xab, 0x31, 0xbc, 0x9a, 0xdf, 0x91, 0x90, 0xfb, 0xb0, 0xe6, 0x62, 0x9b, 0x8c, 0x4e, 0x77,
	0x76, 0x32, 0x44, 0x2e, 0x3a, 0x38, 0xe1, 0xfb, 0x90, 0x0c, 0x22, 0x0d, 0x45, 0xa4, 0x18, 0x87,
	0xb2, 0x18, 0x28, 0xa5, 0xb4, 0x5f, 0xcf, 0xc0, 0x2b, 0xc5, 0x4e, 0x27, 0xc0, 0x1d, 0x93, 0xe1,
	0x92, 0x63, 0x52, 0x4a, 0xda, 0xc4, 0x8a, 0xd6, 0x5d, 0x2c, 0xce, 0x03, 0x48, 0x76, 0x03, 0x6c,
	0x11, 0xbe, 0x60, 0x13, 0x2d, 0x49, 0x9f, 0x1d, 0xbd, 0x0d, 0xf3, 0x01, 0xb6, 0x4c, 0xc7, 0x99,
	0xc8, 0xfc, 0x8a, 0x17, 0xbd, 0x07, 0x8b, 0xa6, 0x65, 0x85, 0x81, 0x69, 0x9d, 0x4e, 0x64, 0xe6,
	0x1e, 0x37, 0xd7, 0x95, 0x1d, 0x05, 0x98, 0x1e, 0xf9, 0x8e, 0x3d, 0x91, 0x3d, 0xfb, 0xec, 0xe8,
	0x5d, 0x58, 0x6c, 0xdf, 0x33, 0xa8, 0xe5, 0x07, 0x78, 0x22, 0x23, 0x2e, 0xb4, 0xef, 0x35, 0x39,
	0x33, 0x17, 0xe4, 0x6e, 0xe1, 0xf8, 0x94, 0x8a, 0xe8, 0x3b, 0x56, 0xd0, 0xf1, 0x3b, 0x35, 0x9f,
	0x52, 0xf4, 0x0e, 0x2c, 0x04, 0xbe, 0x65, 0x98, 0xa1, 0x25, 0xc2, 0xd7, 0x78, 0xf3, 0xf8, 0x56,
	0x31, 0xb4, 0xb4, 0xbf, 0x2f, 0xc0, 0x8d, 0x6d, 0xe2, 0x99, 0xc1, 0xe9, 0xd9, 0x0b, 0xf6, 0xa3,
	0x04, 0xac, 0x9b, 0xd1, 0x9a, 0x1a, 0xd6, 0x00, 0x8f, 0xe1, 0x4a, 0x26, 0xb5, 0x90, 0x1f, 0x8c,
	0x0b, 0x71, 0x17, 0xfb, 0x86, 0xfe, 0x8a, 0x79, 0xb1, 0xef, 0xfc, 0x34, 0x01, 0x37, 0x0f, 0x85,
	0xaa, 0x86, 0xe5, 0x7b, 0xed, 0x90, 0x0a, 0x15, 0x4c, 0x16, 0x90, 0x13, 0xc3, 0x21, 0x94, 0xe5,
	0xa6, 0x45, 0x08, 0x7b, 0x34, 0x4e, 0x8d, 0x0b, 0xa6, 0x1b, 0xf5, 0x45, 0xf0, 0x7b, 0x02, 0x5d,
	0xbf, 0x7e, 0x78, 0x16, 0xb9, 0x46, 0x28, 0x43, 0xaf, 0xc1, 0x4a, 0xd7, 0xa7, 0x84, 0x91, 0x67,
	0xd8, 0x10, 0xf1, 0x50, 0x38, 0x59, 0x52, 0x5f, 0x8e, 0xa8, 0xe2, 0xc8, 0xe2, 0x6c, 0x1e, 0x9f,
	0x5a, 0x9f, 0x6d, 0x56, 0xb2, 0x45, 0x54, 0xc1, 0xa6, 0xfd, 0x65, 0x16, 0xd6, 0xce, 0x54, 0x01,
	0x7d, 0x02, 0xb9, 0xde, 0x38, 0x62, 0x15, 0x8c, 0xbe, 0x6f, 0x4e, 0xb2, 0x8f, 0xae, 0x46, 0xd2,
	0x62, 0xde, 0xad, 0x9e, 0xa3, 0x6e, 0xc3, 0x0a, 0x0b, 0x42, 0x6c, 0x44, 0xdd, 0x54, 0x6d, 0xae,
	0x1b, 0x23, 0x68, 0x55, 0x8f, 0xfd, 0xcf, 0xdb, 0x12, 0x6c, 0x99, 0x8b, 0xec, 0x47, 0x12, 0xa8,
	0x0c, 0xe9, 0xb6, 0xe9, 0xd0, 0x38, 0xc8, 0xcc, 0x78, 0x90, 0x15, 0x21, 0xd3, 0x47, 0x89, 0x34,
	0x89, 0x2c, 0x42, 0xd5, 0x9e, 0x1b, 0xaf, 0x49, 0x3d, 0x92, 0xe8, 0x6b, 0xd2, 0x07, 0x99, 0x9b,
	0x54, 0x93, 0x3e, 0xca, 0x40, 0x90, 0x9a, 0xff, 0xba, 0x41, 0x6a, 0xe1, 0x12, 0x41, 0x2a, 0x1e,
	0x2e, 0x16, 0x2f, 0x13, 0x2e, 0xe2, 0xd1, 0x2d, 0x79, 0x99, 0xe8, 0xa6, 0xfd, 0x78, 0x1e, 0x6e,
	0xef, 0x85, 0x0e, 0x23, 0xc2, 0x21, 0xfe, 0xed, 0x37, 0xff, 0x17, 0x09, 0x58, 0xbb, 0x68, 0xd7,
	0x37, 0xc6, 0x26, 0x6b, 0x17, 0xcf, 0xb5, 0x30, 0xbc, 0xe7, 0x57, 0xad, 0xd1, 0xdd, 0xae, 0xfd,
	0x69, 0x06, 0xd2, 0xc3, 0x3b, 0xb3, 0x01, 0x57, 0x38, 0x2b, 0xb1, 0x79, 0xb2, 0x7d, 0xc9, 0x5d,
	0xb9, 0xda, 0x97, 0xec, 0x6f, 0xc9, 0x0e, 0xcc, 0x06, 0xfe, 0x31, 0x55, 0x13, 0x6b, 0xbe, 0xe4,
	0x89, 0x15, 0x74, 0xff, 0x58, 0x17, 0x03, 0x68, 0x0e, 0xcc, 0x89, 0x54, 0x9a, 0xa7, 0xd0, 0xdd,
	0x00, 0xdb, 0xc4, 0x62, 0x3c, 0x2b, 0x11, 0xe1, 0x49, 0xde, 0x49, 0x56, 0x7a, 0x64, 0x19, 0xc6,
	0x1e, 0x00, 0x10, 0x86, 0x5d, 0xc3, 0xf2, 0x43, 0x8f, 0x4d, 0x12, 0x29, 0x92, 0x9c, 0xbd, 0xc4,
	0xb9, 0xb5, 0x5f, 0x24, 0x60, 0x46, 0xf7, 0x8f, 0xd1, 0x1d, 0x58, 0x32, 0x2d, 0x16, 0x9a, 0xce,
	0xc0, 0x48, 0x29, 0x49, 0x93, 0xc3, 0xf8, 0xb0, 0x80, 0x3d, 0x16, 0x10, 0x1c, 0x19, 0xe1, 0xe0,
	0x65, 0x1b, 0x41, 0x5e, 0x21, 0xa2, 0x51, 0xb4, 0xbf, 0x2d, 0x40, 0xb6, 0xe4, 0x84, 0x94, 0xe1,
	0x80, 0x78, 0x9d, 0xc8, 0xe7, 0xea, 0x70, 0xc5, 0x36, 0x9f, 0x11, 0x4c, 0x8d, 0x43, 0x3f, 0x74,
	0x6c, 0xe2, 0x19, 0xc4, 0xb3, 0xf1, 0xc9, 0x44, 0x2b, 0x8b, 0xa4, 0xe4, 0xb6, 0x14, 0xac, 0x72,
	0x39, 0x99, 0xac, 0xc5, 0xf2, 0x3f, 0x9b, 0xf0, 0x3b, 0x6b, 0xef, 0x86, 0x37, 0x79, 0xfa, 0x57,
	0x56, 0x82, 0xe8, 0x00, 0x16, 0x2d, 0xa9, 0x36, 0x0f, 0xb9, 0xdc, 0x52, 0xf7, 0xc7, 0x59, 0x6a,
	0x64, 0x9a, 0x11, 0x45, 0xef, 0x41, 0x69, 0x7f, 0x9e, 0x83, 0x05, 0x45, 0x45, 0xb7, 0x21, 0x65,
	0x71, 0x33, 0xf9, 0xc4, 0x36, 0x88, 0xf4, 0xea, 0x19, 0x1d, 0x22, 0x52, 0xd5, 0x46, 0x2e, 0x44,
	0x77, 0x0b, 0xe3, 0x19, 0xd7, 0x34, 0x5a, 0xb3, 0x87, 0x5f, 0x5b, 0x93, 0xc2, 0x43, 0x89, 0xa7,
	0x42, 0x7c, 0x3b, 0xd6, 0xa2, 0xe8, 0x1e, 0xcc, 0x49, 0xef, 0x9b, 0xe0, 0x88, 0x91, 0x9c, 0xda,
	0xcf, 0x67, 0x61, 0x29, 0x0e, 0xc9, 0x4f, 0xe3, 0xc1, 0x1b, 0x95, 0x72, 0xc2, 0xe5, 0x81, 0x4b,
	0x12, 0xda, 0x81, 0xb4, 0x17, 0xba, 0x38, 0x20, 0x96, 0xe9, 0xc8, 0xb9, 0x4d, 0xb2, 0x52, 0xbb,
	0x53, 0xfa, 0x4a, 0x4f, 0x4c, 0x8e, 0xf7, 0xc3, 0x04, 0x64, 0x2d, 0x93, 0xe1, 0x8e, 0x1f, 0xc7,
	0x92, 0x13, 0x78, 0xfc, 0x72, 0xcc, 0x54, 0x28, 0xf5, 0xf1, 0x23, 0x35, 0x32, 0xd6, 0x10, 0x4d,
	0xfb, 0x62, 0x1a, 0x32, 0xc3, 0x8c, 0xe8, 0xcb, 0x04, 0xa4, 0x15, 0xe7, 0xa9, 0xdc, 0xd9, 0x3c,
	0xa8, 0xf3, 0x25, 0xc4, 0xff, 0x22, 0xdd, 0x22, 0xc2, 0xa9, 0x88, 0x0c, 0xfa, 0x8a, 0x15, 0x6f,
	0x52, 0xed, 0xbb, 0xb0, 0x3c, 0xc0, 0xc0, 0x6f, 0xee, 0x11, 0x8b, 0x5a, 0xa9, 0x5e, 0xbb, 0xef,
	0x0f, 0xd3, 0x93, 0xfa, 0xc3, 0xf6, 0x02, 0xcc, 0x89, 0x15, 0xd0, 0xfe, 0x31, 0x03, 0xd9, 0x0a,
	0xff, 0x1c, 0x38, 0x6a, 0x0e, 0x01, 0x05, 0xbd, 0x5b, 0xe5, 0xd0, 0x31, 0x77, 0x6f, 0x9c, 0x45,
	0x46, 0xee, 0xa3, 0xbb, 0x53, 0x7a, 0x36, 0x18, 0xb9, 0xa4, 0x7e, 0x3f, 0x01, 0xb7, 0xa2, 0x5c,
	0xf6, 0xec, 0x63, 0x55, 0x4e, 0xe7, 0xfd, 0x17, 0x48, 0x66, 0x77, 0xa7, 0xf4, 0x1b, 0x87, 0x17,
	0xa4, 0xf6, 0x5f, 0x26, 0x20, 0xef, 0xf2, 0xb8, 0xa9, 0x12, 0xca, 0x73, 0x14, 0x91, 0x6e, 0xfa,
	0xe1, 0x0b, 0x46, 0xe0, 0xdd, 0x29, 0xfd, 0xb6, 0x3b, 0x26, 0xdd, 0x38, 0x04, 0x64, 0xf5, 0x1c,
	0xaa, 0x37, 0xfe, 0xec, 0x64, 0x86, 0x1f, 0x71, 0x45, 0x6e, 0x78, 0x6b, 0x98, 0xb8, 0x9d, 0x84,
	0x05, 0x05, 0xac, 0xfd, 0x7e, 0x15, 0x52, 0xb1, 0xaa, 0x0b, 0x6a, 0x43, 0xa6, 0x57, 0xb9, 0xf1,
	0x45, 0x15, 0x2b, 0x5a, 0xf5, 0xf7, 0x2f, 0x51, 0xbc, 0xe9, 0x7d, 0x37, 0x24, 0x84, 0x9e, 0x66,
	0x83, 0x04, 0x74, 0x1f, 0x80, 0x32, 0x33, 0x60, 0xb2, 0x56, 0x25, 0xd3, 0x3d, 0x6d, 0xc4, 0x6d,
	0x5b, 0x51, 0x35, 0x52, 0x4f, 0x0a, 0x6e, 0x51, 0xc2, 0x3a, 0x80, 0x85, 0x00, 0xd3, 0xd0, 0x61,
	0xfc, 0x72, 0x38, 0x73, 0x59, 0xcd, 0xaa, 0x0c, 0xcb, 0x72, 0x98, 0x2e, 0x30, 0xf4, 0x08, 0x0b,
	0x7d, 0x0f, 0x10, 0xee, 0x6d, 0x83, 0x9e, 0xe1, 0x17, 0x26, 0x33, 0xfc, 0xc8, 0x06, 0xd2, 0xb3,
	0x78, 0x98, 0xa4, 0xfd, 0x6c, 0x09, 0xd2, 0x43, 0x86, 0xe1, 0x51, 0xd8, 0x35, 0x4f, 0x0c, 0x12,
	0x69, 0x45, 0xd5, 0xe1, 0xb2, 0xec, 0x9a, 0x27, 0x3d, 0x55, 0x29, 0xaa, 0x40, 0x92, 0xdf, 0x86,
	0x65, 0x65, 0x6e, 0x5a, 0x54, 0xe6, 0x36, 0xc6, 0xd6, 0x09, 0x7d, 0x4a, 0x45, 0x61, 0x6e, 0xd1,
	0x51, 0x5f, 0xe8, 0x16, 0x80, 0x83, 0xcd, 0xc0, 0x33, 0x02, 0x93, 0xc9, 0xd8, 0x9b, 0xd0, 0x93,
	0x82, 0xa2, 0x9b, 0x0c, 0xa3, 0x2a, 0x64, 0x9d, 0x7b, 0x46, 0x80, 0x3b, 0xa1, 0x63, 0x06, 0xaa,
	0x58, 0x35, 0xd1, 0xa5, 0x3f, 0xe3, 0xdc, 0xd3, 0x07, 0xa4, 0x04, 0xd4, 0xd6, 0x30, 0xd4, 0xdc,
	0x44, 0x50, 0x5b, 0x43, 0x50, 0x3c, 0x63, 0x20, 0x9e, 0x11, 0x60, 0x47, 0x5e, 0x1d, 0xbb, 0x81,
	0x2f, 0x22, 0xc9, 0x44, 0xb7, 0x92, 0x55, 0x97, 0x78, 0xba, 0x92, 0xdc, 0x57, 0x82, 0xdc, 0xf9,
	0x8e, 0xcd, 0xc0, 0x35, 0x84, 0x4f, 0xa9, 0x25, 0x1e, 0x75, 0xbe, 0x6d, 0xdf, 0x77, 0x54, 0x02,
	0xc7, 0xb9, 0x9b, 0x9c, 0x99, 0x8b, 0x62, 0x33, 0x70, 0x4e, 0x0d, 0xca, 0xfc, 0xee, 0xb9, 0x7e,
	0x1b, 0x13, 0x15, 0xdc, 0x4d, 0xe6, 0x77, 0x51, 0x01, 0x56, 0x89, 0xd7, 0x0d, 0x99, 0x31, 0x58,
	0x73, 0x4c, 0xae, 0xcf, 0x6c, 0x24, 0xf5, 0xac, 0xe8, 0xaa, 0xc5, 0x8a, 0x89, 0xe8, 0xdb, 0x90,
	0xb5, 0x4d, 0x66, 0x1a, 0xb4, 0xeb, 0x10, 0xc6, 0x1d, 0xf2, 0xc8, 0xb7, 0x73, 0x20, 0xd6, 0x7e,
	0x73, 0xdc, 0xda, 0x97, 0x4d, 0x66, 0x36, 0xb9, 0x9c, 0xac, 0x35, 0xea, 0x69, 0x7b, 0x90, 0x80,
	0xde, 0x85, 0x5c, 0x0c, 0x9c, 0xfb, 0xaa, 0xd1, 0x0e, 0x4c, 0x4b, 0x2c, 0x53, 0x4a, 0xf8, 0xc5,
	0x5a, 0x4f, 0x84, 0x3b, 0xf7, 0x43, 0xd5, 0x89, 0x5e, 0x1f, 0xd0, 0x4a, 0x65, 0x0e, 0xb2, 0xf6,
	0xdd, 0x1f, 0x44, 0xe5, 0x0e, 0x26, 0xac, 0xf6, 0xdd, 0xcd, 0xa0, 0x8c, 0xff, 0xeb, 0x9c, 0x8a,
	0xba, 0xf3, 0xca, 0xf8, 0x3d, 0x55, 0x8b, 0xfc, 0xb2, 0xa9, 0x04, 0xf5, 0xac, 0x33, 0x4c, 0x42,
	0x77, 0x01, 0x11, 0x59, 0x5c, 0x35, 0x62, 0x9e, 0x9d, 0x11, 0x33, 0xc8, 0xa8, 0x9e, 0x1e, 0x10,
	0xfa, 0x41, 0x02, 0x56, 0x95, 0xf5, 0x45, 0xb4, 0x3f, 0xc6, 0xa4, 0x73, 0xc4, 0x68, 0x2e, 0x2b,
	0xe2, 0x88, 0xfe, 0x02, 0x11, 0x4e, 0x56, 0xe5, 0x45, 0x48, 0x7f, 0x2c, 0x41, 0x65, 0x76, 0x9d,
	0x75, 0x86, 0xe9, 0xe8, 0x11, 0x2c, 0x47, 0x49, 0xaf, 0xdc, 0xcf, 0x57, 0x84, 0x3d, 0xee, 0x8e,
	0x5d, 0x53, 0x25, 0x24, 0xf6, 0xf4, 0x92, 0x1d, 0x6b, 0xf1, 0xeb, 0x84, 0x17, 0xba, 0x46, 0x2f,
	0x0d, 0x5e, 0x13, 0x31, 0x24, 0xe5, 0x85, 0xae, 0x3a, 0x11, 0x28, 0xba, 0x01, 0xb2, 0x3e, 0x6f,
	0x84, 0x01, 0xc9, 0x5d, 0x95, 0xf9, 0x83, 0x20, 0x1c, 0x04, 0x04, 0x11, 0x58, 0xe3, 0xc1, 0xde,
	0x55, 0x5b, 0xae, 0xbf, 0x54, 0xd7, 0x84, 0x6a, 0x6f, 0x8f, 0x53, 0xad, 0x11, 0x13, 0xee, 0xad,
	0xd6, 0x15, 0xff, 0x0c, 0x2a, 0xbf, 0x4e, 0xdf, 0x7c, 0x22, 0x8a, 0xe2, 0x06, 0x19, 0xa8, 0x8a,
	0x47, 0x1e, 0x7e, 0x47, 0x0c, 0x39, 0x36, 0x71, 0x8e, 0xd5, 0xd9, 0x0b, 0xe7, 0x17, 0xd9, 0x75,
	0xed, 0xc9, 0xf9, 0x05, 0xf8, 0x8f, 0xce, 0xd3, 0x44, 0x79, 0x75, 0x5e, 0x58, 0xe9, 0x4c, 0x04,
	0xe9, 0xe0, 0x5a, 0x19, 0xae, 0x9e, 0xbd, 0xee, 0x28, 0x03, 0x33, 0x4f, 0x70, 0x94, 0xa8, 0xf1,
	0x4f, 0x74, 0x45, 0x25, 0x5c, 0x22, 0x7c, 0x27, 0x74, 0xd9, 0x78, 0x30, 0xfd, 0x5e, 0x42, 0xfb,
	0xdd, 0x2c, 0xa4, 0x87, 0x8e, 0x25, 0x9e, 0xd1, 0xc5, 0xef, 0x59, 0x67, 0x66, 0x74, 0x6f, 0x6d,
	0xa9, 0x8c, 0x4e, 0x70, 0xa2, 0xff, 0x85, 0x94, 0x1d, 0xaa, 0x17, 0x20, 0x77, 0xa2, 0xc2, 0x11,
	0x44, 0xfc, 0x7b, 0x14, 0x15, 0x63, 0x4f, 0x36, 0xa2, 0xf0, 0x3a, 0x49, 0xb0, 0xee, 0xbd, 0xd1,
	0x88, 0xea, 0xeb, 0x7d, 0x48, 0x8a, 0x40, 0x32, 0x71, 0xdd, 0x76, 0x91, 0xb3, 0x0b, 0xd1, 0xc1,
	0x83, 0x69, 0x61, 0xf8, 0x60, 0x72, 0x60, 0x59, 0xf9, 0xb6, 0x41, 0xbc, 0xb6, 0x4f, 0x73, 0x8b,
	0x62, 0xc3, 0xee, 0xbc, 0xc0, 0xc1, 0x1f, 0xe5, 0x4a, 0x55, 0xaf, 0xed, 0xeb, 0x4b, 0x56, 0xbf,
	0x41, 0xb5, 0xdf, 0x24, 0x20, 0x15, 0xeb, 0x1d, 0x7f, 0xfb, 0x2b, 0xc1, 0x4a, 0xa4, 0x5e, 0x60,
	0xda, 0x24, 0xa4, 0x13, 0x5d, 0x66, 0xa3, 0x29, 0xe9, 0x42, 0x04, 0x7d, 0x00, 0x91, 0x16, 0x06,
	0x25, 0xcf, 0xf1, 0x24, 0x57, 0xbb, 0x94, 0x12, 0x68, 0x92, 0xe7, 0x58, 0xbb, 0x0f, 0xa9, 0xd8,
	0xcb, 0xe0, 0x38, 0x07, 0x4c, 0xc6, 0x1c, 0x30, 0x4f, 0x21, 0xd9, 0x7b, 0xc6, 0x43, 0x1a, 0x5c,
	0xdd, 0x6b, 0x94, 0x2b, 0x35, 0xa3, 0xf5, 0xe9, 0x7e, 0x65, 0xe8, 0x11, 0x6a, 0x0d, 0xb2, 0xb5,
	0x6a, 0xbd, 0x52, 0xd4, 0x0d, 0xbd, 0xb2, 0xa3, 0x57, 0x9a, 0xcd, 0x6a, 0xa3, 0x9e, 0x49, 0xa0,
	0x6b, 0xb0, 0x5a, 0x6b, 0xec, 0x54, 0x9b, 0xad, 0x6a, 0x29, 0xde, 0x31, 0x8d, 0x00, 0xe6, 0xe5,
	0x13, 0x57, 0x66, 0x06, 0xad, 0x00, 0xb4, 0x2a, 0xf5, 0x66, 0x43, 0x7f, 0x58, 0x6b, 0x3c, 0xce,
	0xcc, 0xe7, 0x1b, 0xb0, 0x18, 0x65, 0x28, 0xe8, 0x3a, 0xac, 0xd5, 0x1a, 0xcd, 0xe6, 0x39, 0x43,
	0x72, 0x04, 0xa3, 0xf9, 0xe8, 0xa0, 0xa8, 0x57, 0xca, 0x06, 0xe7, 0xcb, 0x24, 0x50, 0x16, 0x96,
	0x05, 0xb9, 0xd6, 0xd8, 0x91, 0xa4, 0xe9, 0xfc, 0x2e, 0x2c, 0xc5, 0x43, 0x24, 0xba, 0x05, 0xd7,
	0xcb, 0xd5, 0x66, 0xab, 0x58, 0x2f, 0x55, 0xce, 0x02, 0x5e, 0x86, 0x64, 0xe5, 0xa0, 0x54, 0xab,
	0x96, 0x2b, 0xc5, 0xba, 0x7a, 0x53, 0x6b, 0x34, 0xab, 0xf5, 0x4a, 0x66, 0x3a, 0xff, 0x1c, 0xd2,
	0x43, 0x07, 0x28, 0xba, 0x03, 0xb7, 0xca, 0xc5, 0x56, 0xd1, 0x68, 0xee, 0xd7, 0xaa, 0xad, 0x4b,
	0xbd, 0xd0, 0xf1, 0x89, 0x37, 0x2b, 0x8f, 0x0e, 0x2a, 0xf5, 0x56, 0xb5, 0x58, 0xcb, 0xcc, 0xa0,
	0x25, 0x58, 0xac, 0x37, 0x24, 0x50, 0x66, 0x96, 0xf7, 0x16, 0x0f, 0x5a, 0x51, 0x7b, 0x2e, 0xff,
	0x18, 0xb2, 0x23, 0x07, 0x1f, 0x7a, 0x15, 0x6e, 0xd7, 0x2a, 0x45, 0xbd, 0x6e, 0xe8, 0xc5, 0x56,
	0xc5, 0x68, 0xb6, 0xf8, 0xbf, 0x9d, 0x4f, 0x87, 0xc6, 0x4f, 0x43, 0x8a, 0x2f, 0x8e, 0xd1, 0xac,
	0x14, 0xf5, 0xd2, 0x6e, 0x26, 0xc1, 0x07, 0x2a, 0x35, 0xea, 0xdc, 0x02, 0xad, 0xcc, 0x74, 0xde,
	0x83, 0x2b, 0x67, 0x85, 0x69, 0xf4, 0x1a, 0xdc, 0x69, 0xec, 0xb7, 0xaa, 0x7b, 0xd1, 0xeb, 0xe3,
	0x39, 0xe8, 0x1a, 0x5c, 0xdd, 0x2e, 0xb6, 0x4a, 0xbb, 0xc6, 0x8e, 0x5e, 0x2c, 0x57, 0x2b, 0xf5,
	0x96, 0x51, 0xae, 0x34, 0x4b, 0x95, 0x7a, 0x2b, 0x93, 0x40, 0xab, 0x90, 0xae, 0x37, 0xf4, 0xbd,
	0x62, 0xcd, 0xa8, 0x3c, 0x3a, 0x10, 0x28, 0x99, 0xe9, 0xfc, 0xe7, 0x90, 0xde, 0xc1, 0x4c, 0x3d,
	0xcb, 0x3f, 0x0d, 0x31, 0x65, 0x7c, 0x97, 0x77, 0x03, 0xff, 0x73, 0x6c, 0xb1, 0x68, 0x1f, 0x25,
	0xf5, 0xa4, 0xa2, 0x54, 0x6d, 0xde, 0xcd, 0x33, 0x08, 0x8a, 0x45, 0xb7, 0xf4, 0xd2, 0xa4, 0xa2,
	0x54, 0x6d, 0x74, 0x1d, 0xe4, 0x81, 0xc5, 0x3b, 0xe5, 0xfb, 0xc2, 0x82, 0x68, 0x57, 0xed, 0xfc,
	0x2f, 0x13, 0x90, 0xdd, 0x37, 0x99, 0x75, 0xf4, 0x8d, 0x0c, 0x87, 0xde, 0x81, 0x39, 0xf1, 0xa9,
	0x62, 0xec, 0xed, 0x71, 0xbf, 0x4a, 0x90, 0xdc, 0x79, 0x17, 0x50, 0x19, 0x3b, 0x98, 0xe1, 0x6f,
	0xc6, 0x28, 0xbf, 0x4a, 0x40, 0xb6, 0x46, 0xa8, 0x5c, 0x02, 0xfa, 0x72, 0x86, 0xfb, 0x3f, 0x48,
	0xf1, 0xeb, 0x4a, 0x74, 0xff, 0x3a, 0xef, 0x2d, 0xf1, 0x20, 0x76, 0x3a, 0x81, 0x6b, 0x9e, 0xe8,
	0xea, 0x8e, 0xc5, 0x07, 0x37, 0x3b, 0xd8, 0x60, 0xfe, 0x13, 0xec, 0xa9, 0xd7, 0x9f, 0x24, 0xa7,
	0xb4, 0x38, 0x21, 0x1f, 0x02, 0x8a, 0x2b, 0x4c, 0xbb, 0xbe, 0x47, 0x31, 0x7a, 0x17, 0xe6, 0xc5,
	0x94, 0xa2, 0x82, 0xcc, 0x58, 0x73, 0x2b, 0x76, 0xf4, 0x9f, 0x90, 0xf6, 0xf0, 0x09, 0x33, 0x62,
	0x43, 0x4e, 0x47, 0x0f, 0x4e, 0x27, 0x6c, 0x3f, 0x1a, 0x76, 0xeb, 0xaf, 0xb3, 0xb0, 0x24, 0x24,
	0x9b, 0x38, 0x78, 0x46, 0x2c, 0x8c, 0xbe, 0x05, 0x8b, 0x91, 0xeb, 0xa2, 0x0b, 0x7e, 0x00, 0x31,
	0xe4, 0xde, 0xda, 0x38, 0xc5, 0xf2, 0x53, 0x88, 0x00, 0xf4, 0x67, 0x88, 0x2e, 0xf8, 0x3d, 0xc4,
	0xc8, 0xc2, 0x69, 0x77, 0x27, 0x63, 0x96, 0x46, 0xcb, 0x4f, 0xa1, 0xef, 0x00, 0xf4, 0xb7, 0xc4,
	0x45, 0x43, 0x8d, 0x6c, 0x9c, 0x49, 0x26, 0x72, 0x00, 0xa9, 0x98, 0x2f, 0xa3, 0x0b, 0x94, 0x1b,
	0x75, 0x79, 0xed, 0xea, 0x88, 0xc3, 0x54, 0xdc, 0x2e, 0x3b, 0xcd, 0x4f, 0x69, 0x5f, 0x25, 0xfe,
	0x50, 0xbc, 0xd6, 0x93, 0x96, 0x5c, 0x66, 0x97, 0xd0, 0x82, 0xe5, 0xbb, 0x7f, 0x2c, 0xfe, 0x36,
	0x71, 0xc4, 0x58, 0x97, 0x3e, 0xd8, 0xdc, 0x3c, 0x3e, 0x3e, 0x1e, 0xea, 0xdd, 0x34, 0x43, 0x76,
	0xd4, 0xfb, 0x2d, 0xd4, 0xdd, 0x49, 0x19, 0x0b, 0x01, 0x36, 0x6d, 0xdf, 0x73, 0xc6, 0x4b, 0x88,
	0x99, 0xbd, 0xd9, 0x75, 0x4c, 0xd6, 0xf6, 0x03, 0xf7, 0x92, 0xec, 0x62, 0x98, 0x37, 0xf9, 0x38,
	0xdb, 0x0e, 0xdc, 0xb4, 0x7c, 0xf7, 0x5c, 0x7b, 0x6d, 0x83, 0x30, 0xd5, 0x3e, 0xb7, 0xcc, 0x67,
	0x1f, 0x29, 0xae, 0x8e, 0xef, 0x98, 0x5e, 0xa7, 0xe0, 0x07, 0x9d, 0xcd, 0x0e, 0xf6, 0x84, 0xd5,
	0x36, 0xfb, 0x83, 0x8e, 0xfe, 0x0e, 0xec, 0xfd, 0xe8, 0xfb, 0x70, 0x5e, 0x30, 0xbf, 0xf5, 0xcf,
	0x00, 0x00, 0x00, 0xff, 0xff, 0x41, 0x7b, 0xaf, 0xf2, 0xa3, 0x26, 0x00, 0x00,
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4

// ModelServiceClient is the client API for ModelService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ModelServiceClient interface {
	// Gets the specified model resource by model ID.
	GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error)
	// Lists all models in the specified dataset. Requires the READER dataset
	// role.
	ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error)
	// Patch specific fields in the specified model.
	PatchModel(ctx context.Context, in *PatchModelRequest, opts ...grpc.CallOption) (*Model, error)
	// Deletes the model specified by modelId from the dataset.
	DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*empty.Empty, error)
}

type modelServiceClient struct {
	cc *grpc.ClientConn
}

func NewModelServiceClient(cc *grpc.ClientConn) ModelServiceClient {
	return &modelServiceClient{cc}
}

func (c *modelServiceClient) GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error) {
	out := new(Model)
	err := c.cc.Invoke(ctx, "/google.cloud.bigquery.v2.ModelService/GetModel", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *modelServiceClient) ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error) {
	out := new(ListModelsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.bigquery.v2.ModelService/ListModels", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *modelServiceClient) PatchModel(ctx context.Context, in *PatchModelRequest, opts ...grpc.CallOption) (*Model, error) {
	out := new(Model)
	err := c.cc.Invoke(ctx, "/google.cloud.bigquery.v2.ModelService/PatchModel", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *modelServiceClient) DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
	out := new(empty.Empty)
	err := c.cc.Invoke(ctx, "/google.cloud.bigquery.v2.ModelService/DeleteModel", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// ModelServiceServer is the server API for ModelService service.
type ModelServiceServer interface {
	// Gets the specified model resource by model ID.
	GetModel(context.Context, *GetModelRequest) (*Model, error)
	// Lists all models in the specified dataset. Requires the READER dataset
	// role.
	ListModels(context.Context, *ListModelsRequest) (*ListModelsResponse, error)
	// Patch specific fields in the specified model.
	PatchModel(context.Context, *PatchModelRequest) (*Model, error)
	// Deletes the model specified by modelId from the dataset.
	DeleteModel(context.Context, *DeleteModelRequest) (*empty.Empty, error)
}

func RegisterModelServiceServer(s *grpc.Server, srv ModelServiceServer) {
	s.RegisterService(&_ModelService_serviceDesc, srv)
}

func _ModelService_GetModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetModelRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ModelServiceServer).GetModel(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.bigquery.v2.ModelService/GetModel",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ModelServiceServer).GetModel(ctx, req.(*GetModelRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ModelService_ListModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListModelsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ModelServiceServer).ListModels(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.bigquery.v2.ModelService/ListModels",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ModelServiceServer).ListModels(ctx, req.(*ListModelsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ModelService_PatchModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PatchModelRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ModelServiceServer).PatchModel(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.bigquery.v2.ModelService/PatchModel",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ModelServiceServer).PatchModel(ctx, req.(*PatchModelRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ModelService_DeleteModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteModelRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ModelServiceServer).DeleteModel(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.bigquery.v2.ModelService/DeleteModel",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ModelServiceServer).DeleteModel(ctx, req.(*DeleteModelRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _ModelService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.cloud.bigquery.v2.ModelService",
	HandlerType: (*ModelServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetModel",
			Handler:    _ModelService_GetModel_Handler,
		},
		{
			MethodName: "ListModels",
			Handler:    _ModelService_ListModels_Handler,
		},
		{
			MethodName: "PatchModel",
			Handler:    _ModelService_PatchModel_Handler,
		},
		{
			MethodName: "DeleteModel",
			Handler:    _ModelService_DeleteModel_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "google/cloud/bigquery/v2/model.proto",
}
